题解 | #完全数计算#

完全数计算

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

#include <cstdio>
#include <cmath>

using namespace std;

bool isPerfect(int num) {
    if (num < 6) {
        return false;
    }
    int sum = 1, num_q = sqrt(num);
    for (int i = 2; i <= num_q; i++) {
        if (num % i == 0) {
            sum += (i + num / i);
        }
    }
    if (num_q * num_q == num && num_q < num) {
        sum -= num_q;
    }
    return sum == num;
}

int main() {
    int n, cnt;
    while(EOF != scanf("%d", &n)){
        cnt = 0;
        for (int i = 1; i <= n; i++) {
            if (isPerfect(i)) {
                cnt++;
            }
        }
        printf("%d\n", cnt);
    }

    return 0;
}

全部评论

相关推荐

03-12 14:52
已编辑
长沙学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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