c语言找出1000以内的完数

99ANYc3cd6
预计阅读时长 4 分钟
位置: 首页 C语言 正文

C语言找出1000以内的完数

完数是指一个数等于它的所有真因子(除了它本身以外的约数)之和的数,6的真因子是1、2、3,而1+2+3=6,所以6是一个完数。

以下是使用C语言找出1000以内所有完数的代码:

#include <stdio.h>
int main() {
    int num, sum, i;
    printf("1000以内的完数有:\n");
    for (num = 2; num <= 1000; num++) {
        sum = 1; // 1是所有大于1的数的真因子
        // 找出所有真因子并求和
        for (i = 2; i * i <= num; i++) {
            if (num % i == 0) {
                sum += i;
                if (i != num / i) { // 避免重复添加平方数的情况
                    sum += num / i;
                }
            }
        }
        // 判断是否为完数
        if (sum == num) {
            printf("%d\n", num);
        }
    }
    return 0;
}

代码说明:

  1. 外层循环遍历2到1000之间的每个数
  2. 对于每个数,初始化真因子和为1(因为1是所有大于1的数的真因子)
  3. 内层循环找出所有真因子:
    • 从2开始,检查到该数的平方根(优化)
    • 如果找到因子i,则同时添加i和num/i(除非是平方数的情况)
  4. 如果真因子和等于该数本身,则输出这个完数

输出结果:

运行上述程序,将输出1000以内的所有完数:

1000以内的完数有:
6
28
496

这三个数就是1000以内的所有完数。

-- 展开阅读全文 --
头像
dede如何调用图集第一张图片?
« 上一篇 今天
织梦 瀑布流 产品列表
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]