展开

说明

正整数n若是其平方数的尾部,则称n为同构数。例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数。下面的程序求解不超过10000的所有同构数。
已知一位的同构数有三个:1,5,6,因此二位数的同构数的各位数字只可能是1,5,6,这三个数字。依次类推,更高位数同构数的个位数字也只可能是1,5,6,这三个数字。
下面程序的处理思路是:对不超过10000的每一个整数 a,判断其个位数字,若为1,5,6,则将 a 转换为字符串 as ,然后对 a 进行平方运算,并截取其尾部与 as 长度相等的若干字符形成字符串后与 as 比较,根据它们相等与否来断定 a 是否为同构数。
#include#include#includeint myitoa(int, char *); //整数转换为字符串 //*right 取得指定字符串尾部长度为length的子串,返回所得子串的首字符指针 char *right(char *,int length); int main(){	int a,t;	int len;	char as[10] ,rs[20];	printf("[1,10000]内的同构数:\n");	for(a=1;a