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
");
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
        {
            printf("END OF OUTPUT
");
            break;
        }
        else if(n==1)
            printf("%5d  DEFICIENT
",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);
           else if(sum==n)  printf("%5d  PERFECT
",n);
           else             printf("%5d  ABUNDANT
",n);
        }
    }
}
原文地址:https://www.cnblogs.com/gabygoole/p/4483005.html