水题,暴力就可以过。
枚举因数的时候只要枚举2~sqrt(N)就可以了。
还有要注意输出格式。
时间:0毫秒。
空间:168KB。
#include "stdio.h"
#include "math.h"
int main(){
int tmp,n,i,j,sum;
printf("PERFECTION OUTPUT\n");
while(1){
scanf("%d",&n);
if(!n)break;
if(n==1){
printf("%5d DEFICIENT\n",1);
continue;
}
j=(int)(floor(sqrt((double)n)));
sum=1;
for(i=2;i<=j;i++){
if(n%i==0){
sum=sum+i+n/i;
}
if((i==j)&&(j*j==n))sum-=j;
}
printf("%5d ",n);
if(sum==n)printf("PERFECT");
if(sum<n)printf("DEFICIENT");
if(sum>n)printf("ABUNDANT");
printf("\n");
}
printf("END OF OUTPUT\n");
return 0;
}