for循环里第三个if语句,在判断数字是否为同构数时要注意,三位数字要取个位上的数时,应该n(/10)%10,如果仅仅n/10,则仍然包括百位上的数字,其他位数的数字同理。
#include<stdio.h>
int main()
{
int n;
printf("同构数为:");
for(int i=2;i<=999;i++)
{
if(i<10)
{
n=i*i;
if(n%10==i)
printf("%d ",i);
}
if(i>=10&&i<100)
{
n=i*i;
if(n%10==i%10&&((n/10)%10)==i/10)
printf("%d ",i);
}
if(i>=100&&i<=999)
{
n=i*i;
if(n%10==i%10&&((n/10)%10)==((i/10)%10)&&((n/100)%10)==i/100)
printf("%d ",i);
}
}
return 0;
}