题意:一个数除了自身以外的所有因数相加,得到的数如果小于自身,输出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); } } }
时间: 2024-11-03 21:20:38