题解 | #完全数计算# C语言标准解法

完全数计算

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

依次遍历从1...n之间的每一个数,求出这个数k的所有因子保存在数组a中,并累加得到所有因子的和sum,若sum-k=k,则k为完全平方数。
对k开根号可以减少判断的次数

#include<stdio.h>
#include<math.h>
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        int count =0;
        for(int k=1;k<=n;k++){
        int j=0;
        int a[50];
        int sum=0;
        for(int i=1;i<=sqrt(k);i++){
            if(k%i==0){
                a[j++]=i;
                sum+=a[j-1];
                if(i<k/i){
                    a[j++]=k/i;
                    sum+=a[j-1];
                }
            }
        }
        if(k==sum-k)
        count++;
    }
    printf("%d\n",count);
    }
    return 0;
}
全部评论

相关推荐

05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务