poj1528---(数论)

题意:一个数除了自身以外的所有因数相加,得到的数如果小于自身,输出deficient,否则输出abundant,如果相等,输出perfect

这道题核心:求一个数的所有除本身之外的因数的和

int sum=1,i;

           for(i=2;i<n;i++)

           {

               if(n%i==0)

                   sum+=i;

           }

一个数如果除以小于他的从2开始的数,如果n%i==0,说明能n能被i整除,i是他的一个因数,sum+=i,再让i++,i到n-1结束

#include <stdio.h>

#include <stdlib.h>



int main()

{

    int n;

    printf("PERFECTION OUTPUT\n");

    while(scanf("%d",&n)!=EOF)

    {

        if(n==0)

        {

            printf("END OF OUTPUT\n");

            break;

        }

        else if(n==1)

            printf("%5d  DEFICIENT\n",n);

        else

        {

           int sum=1,i;

           for(i=2;i<n;i++)

           {

               if(n%i==0)

                   sum+=i;

           }

           if(sum<n)        printf("%5d  DEFICIENT\n",n);

           else if(sum==n)  printf("%5d  PERFECT\n",n);

           else             printf("%5d  ABUNDANT\n",n);

        }

    }

}

 

你可能感兴趣的:(poj)