计算1-500之间的全部同构数之和

问题描述:

计算1-500之间的全部同构数之和

#includestdio.h
void main()
{
int n,he=0,a=0;
double pingfang;
for(n=4;n10;n++)
{
pingfang=n*n;
if((pingfang-n)%10==0) /*如果这个数是个位数,那么如果它的平方数减去它之后能够被10整除,就是同构数,比如6,平方是36,减去6后是30,除以10结果为3.而按照你的说法想要是同构数,那么至少这个数的平方要大于10,所以从4开始*/
{
printf(%5d,n);
he+=n;
a++; /*计数器,控制每行输出5个同构数*/
if(a%5==0)
printf(\n);
}
}
for(n=10;n100;n++)
{
pingfang=n*n;
if((pingfang-n)/100==0) /*同理,如果是同构数,那么它的平方减去本身除以100也能被整除,因为平方数小于一百的部分已经完全被减去了*/
{
printf(%5d,n);
he+=n;
a++;
if(a%5==0)
printf(\n);
}
}
for(n=100;n=500;n++)
{
pingfang=n*n;
if((pingfang-n)/1000==0) /*同理,如果是同构数,就能被1000整除*/
{
printf(%5d,n);
he+=n;
a++;
if(a%5==0)
printf(\n);
}
}
printf(1到500之间所有的同构数之和为:%5d\n,he);