题解 | 完数VS盈数
完数VS盈数
https://www.nowcoder.com/practice/ccc3d1e78014486fb7eed3c50e05c99d
#include <stdio.h> int FactorSum(int n); int main() { int perfectNum[60];int perfectCount=0; int OverflowNum[60];int OverflowCount=0; for(int n=2;n<=60;n++){ int factorSum=FactorSum(n); if(factorSum==n)perfectNum[perfectCount++]=n; else if(factorSum>n)OverflowNum[OverflowCount++]=n; } printf("E:"); for(int i=0;i<perfectCount;i++)printf(" %d",perfectNum[i]); printf("\nG:"); for(int i=0;i<OverflowCount;i++)printf(" %d",OverflowNum[i]); return 0; } int FactorSum(int n){ int i,sum=1;// 初始为1 for(i=2;i*i<n;i++){ if(n%i==0){ sum+=(i+n/i); } } if(i*i==n) sum+=i; return sum; }