哈喽C!同构数的算法

“同构数”是指这样的整数:它恰好出现在其平方数的右端。
如:376*376=141376。请输出10000以内的全部“同构数”。

算法分析:
1.求出1-10000之间每个数的位数(即这个数是几位数)。设这个数是i.
//用for循环实现,
2.再求出每个数的平方值,提取出最右端对应位数的数值出来。
//用取模%法实现。
如369是个三个数,它的平方是136161,用取模%法提取出最右三位数字161,即136161%1000=161
3.最后判断 i 与右端数 是否相等,相等即为同构数。
//用if语句实现判断

代码实现:
哈喽C!同构数的算法

#include <stdio.h>
main( )
{	for(int i=1;i<=10000;i++)
	{	//位数有哪些可能呢?个,十,百,千。
	if(0<=i&&i<=9)//个位数,即一位数
	{	if(i==(i*i)%10)//如何表示这些位数呢?
		printf("%d*%d=%d\n",i,i,i*i); 
		}
	if(10<=i&&i<=99)//十位数,即两位数 
	{	if(i==(i*i)%100)
		printf("%d*%d=%d\n",i,i,i*i); 
		}
	if(100<=i&&i<=999)//百位数,即三位数
	{	if(i==(i*i)%1000)
		printf("%d*%d=%d\n",i,i,i*i);
		}
	if(1000<=i&&i<=9999)//千位数,即四位数
	{	if(i==(i*i)%10000)
		printf("%d*%d=%d\n",i,i,i*i);
		}
	if(i==10000)
	{	//当i为10000时,显然不是同构数,故不作判定 
		}	
	 } 
}