题目
解决代码及点评
该题目与水仙花数类似,只是条件不同,循环还是一样的
/************************************************************************/ /* 13. 一个数恰好等于它的平方数的右端,这个数称为同构数。 如 5 的平方是25, 5是25中的右端的数, 5就是同构数。找出1~1000之间的全部同构数。 */ /************************************************************************/ /************************************************************************/ #include <stdio.h> #include <stdlib.h>
// 该函数计算num在十进制时有多少位,比如25是两位 int f4131(int num) { int count=0; while(num) { count++; num/=10; } return count; }
// 判断是否同构数 bool f4132(int num) { int n=f4131(num); int times=1;
// 该循环找出应该对多少取模才能算出右边的值 for(int i=0;i<n;i++) { times*=10; }
// 进行同构数判断 if ((num*num)%times==num) { return true; } else return false; } void main() { for(int i=1;i<=1000;i++) // 遍历1到1000 { if (f4132(i)) // 判断该数是否同构数,如果是,则打印 { printf("%4d",i); } } system("pause"); }
代码下载及其运行
代码下载链接:
http://download.csdn.net/detail/yincheng01/6640895
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行
程序运行结果