题解 | #完全数计算#

完全数计算

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

#include <stdlib.h>
#include <string.h>
int main(void)
{
    int n;
    int num = 0;
    int *arr = (int *) malloc(sizeof(int) * 1000);

    memset(arr, 0, sizeof(int) * 1000);
    scanf("%d", &n);

    for (int i = 1, k = 0, tmp = 0; i < n; ++i)
    {
        for (int j = 1; (j * j) < i; ++j)
        {
            if (i % j == 0)
            {
                arr[k++] = j;
            }
        }
        for (int j = 0; j < k; ++j)
        {
            tmp += arr[j];
            if (arr[j] != 1)
                tmp += i / arr[j];
        }
        if (tmp == i)
        {
            //printf("#%d\n", tmp);
            num++;
        }
        k = 0;
        tmp = 0;
        memset(arr, 0, sizeof(int) * 1000);
    }

    printf("%d", num);
    free(arr);
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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