题解 | #完全数计算#

完全数计算

http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

#include<stdio.h>
#include<math.h>
int main() {
int num;
while(~scanf("%d", &num)){
    if(num==1){printf("0\n");break;}
    int count = 0;
    for(int i=2; i<=num; i++){
        int sum = 1,root = sqrt(i); // 求约数遍历到根值即可
        for(int j=2; j<=root; j++){
            if(i%j==0){
                sum +=j; //与约数j相加
                if(i!=root) //防止两个相同的约数重复计算
                    sum +=(i/j); //与约数j对应点另一个约数相加
            }
        }
        if(sum == i)count++;
    }
    printf("%d\n", count);
}
}
全部评论

相关推荐

02-10 12:23
已编辑
新余学院 C++
采集想要offer:专业技能那里要一条一条的列出来吧,感觉你项目很厉害了,但是如果你不写技术栈面试官对你项目不太懂的话都没办法问你八股😂C++都是基架岗,都是一群9✌🏻在卷,我觉得你要是有时间学个go把MySQL和redis写上去找个开发岗吧
点赞 评论 收藏
分享
Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务