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

4个回答

  • #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之间所有的同构数之和为:%5dn,he);