题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int count=0;
for(int i=5;i<=n;i++){
int tmpSum=0;
for(int j=2;j*j<=i;j++){
if(i%j==0&&(j*j)!=i){
tmpSum+=(j+i/j);
}
else if(i%j==0&&(j*j)==i){
tmpSum+=j;
}
}
if(tmpSum==i-1) count++;
}
printf("%d\n",count);
return 0;
}
按照题目的要求找到每个数的因子,由于这里给的数据并不大,所以逐项遍历可以解决问题,特别注意的是万一遇到平方和等于原数的,那么需要对因子只加一次(虽然感觉上这样的数因子之和一定小于完全数);
在上述的基础上对数据统计输出即可。