学习目标:
c语言
学习内容:
同构数的算法
编写程序,打印1~999之间的全部同构数。所谓同构数,是指该数出现在它的平方数的右侧。如25^2=625,25出现在625的右端,25就是同构数。
***输入提示信息:无
***输入数据格式:无
***输出提示信息:“Print all the isomorphism between 1-999:\n”
***输出数据格式:"%d "
注:输出提示信息请放在循环体之外
思路是:一个数的本身出现在它的平方数的右侧,那么它的平方数减去这个数的本身,最后的n位一定是0。n就是原数的位数。如评论所言,625是25的平方,那么625-25就等于600最后两位是0。所以只要判断最后n位是否为0就行了。
#include<stdio.h> #include<math.h> int main() { int a=0,b=0,c=0,sqare; int i=0,j=0; printf("Print all the isomorphism between 1-999:\n"); for(i=1;i<1000;i++) { a=i*i; int pow=1; while(pow<=i) pow*=10;//判断有几位是0 if((a-i)%pow==0) printf("%d ",i); } return 0; }