题解 | #完全数计算#

完全数计算

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;
}

全部评论

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务