poj1528---(数论)

时间:2021-11-12 03:25:52

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

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

int sum=,i;
for(i=;i<n;i++)
{
if(n%i==)
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==)
{
printf("END OF OUTPUT\n");
break;
}
else if(n==)
printf("%5d DEFICIENT\n",n);
else
{
int sum=,i;
for(i=;i<n;i++)
{
if(n%i==)
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);
}
}
}