这道题很水,主要就是注意一下当 n==1 时候的情况就可以了。。。
AC的代码:
#include<iostream> #include <math.h> int main() { printf("PERFECTION OUTPUT\n"); int n,i; while(scanf("%d",&n) && n!=0) { printf("%5d ",n); if(n==1) { printf("DEFICIENT\n"); continue; } int sum=1,limit=(int)sqrt((double)n); for(i=2;i<=limit;i++) { if(n%i==0) sum+=i+n/i; } if(sum==n) printf("PERFECT\n"); else if(sum>n) printf("ABUNDANT\n"); else printf("DEFICIENT\n"); } printf("END OF OUTPUT\n"); return 0; }