所谓同构数,是指该数出现在它的平方数的右侧。 如25^2=625,25出现在625的右端,25就是同构数。那么如何用程序解决这一问题呢?以下是一个一个比较简单通用的方法
代码实现:
#include "stdio.h"
int main()
{
int i, b, m;
for (i = 1; i <= 500; i++)
{
m = 1;
for (b = i; b > 0; b /= 10)
{
m *= 10;
}
if (i == i * i % m)
{
printf("%d ", i);
}
}
return 0;
}
该程序是求500以内的所有同构数,通过两层循环嵌套求出的,第一层表达要求的范围,第二层求出那个数对应10的多少平方,运行结果如下图:
此外,该程序可适用于任何范围,例如1~10000范围的所有同构数,只需把第一个for循环的条件表达式右边值改为10000即可:
#include "stdio.h"
int main()
{
int i, b, m;
for (i = 1; i <= 10000; i++)
{
m = 1;
for (b = i; b > 0; b /= 10)
{
m *= 10;
}
if (i == i * i % m)
{
printf("%d ", i);
}
}
return 0;
}
该程序输出的便如下图:
以上就是我对同构数的解决方案,用简单的双重循环即可实现求任何范围不需要其他复杂的语句,希望对你有所帮助!