题解 | #完全数计算#
完全数计算
http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
一个数的一大一小两个因数,小因数≤这个数的平方根。
给定数字 n ;判断从2到n中有几个完全数,是完全数,计数器+1. (1不是完全数)
判断number是否为完全数:从2到number的平方根中找number的小因数,number/小因数=大因数,
total=1+所有小因数+所有大因数=number
#include<stdio.h>
#include<math.h>
int main(){
int n=0,count=0,squareroot=0;
while (scanf("%d",&n)>0){
for(int number=2;number<=n;number++){
int total=1;//每判断一个number都要重置total
double lim=sqrt(number);//小因数≤这个数的平方根
for(int i=2;i<=lim;i++){
if(number%i==0)
total+=(i+number/i);//total=1+所有小因数+所有大因数
}
if(total==number){
count++;
}
}
printf("%d",count);
}
}