一个数的一大一小两个因数,小因数≤这个数的平方根。

给定数字 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);
  }  
 }