题解 | #完全数计算#

完全数计算

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);
  }  
 }
全部评论

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务