题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
//整体思路比较简单,可以利用空间换取时间 #include <stdio.h> int main() { int n=0,i=0,j=0,t=2,count=0; int arr[10000]; scanf("%d",&n); while(t<=n)//从2开始直到n逐一判断,这里也可以写成函数的形式 { for(i=1;i<t;i++)//从1到t-1,把所有因子找出,放在数组中 { if(t%i==0) { arr[j]=i; j++; } } int num=0; for(i=0;i<j;i++)//将因子全部相加,判断与当前的t是否相等 { num+=arr[i]; } if(num==t) { count++;//累计当前的完全数个数 } j=0; t++; } printf("%d",count); return 0; }