C语言 找出 1000 以内的所有完数

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6的因子为1,2,3,而6=1+2+3,因此6是"完数",编程序找出1000以内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,3

这个程序找出 1000 以内的所有完数,并输出每个完数及其因子。

(如果因子和等于该数,则该数为完数。)

cpp 复制代码
#include <stdio.h>

int main() {
    printf("1000 以内的所有完数及其因子:\n");

    for (int i = 1; i < 1000; i++) {
        int sum = 0;
        // 找出所有因子
        for (int j = 1; j <= i / 2; j++) {
            if (i % j == 0) {
                sum += j;
            }
        }
        // 判断是否为完数
        if (sum == i) {
            printf("%d its factors are", i);
            for (int j = 1; j <= i / 2; j++) {
                if (i % j == 0) {
                    printf(" %d", j);
                }
            }
            printf("\n");
        }
    }

    return 0;
}

代码说明

  1. 遍历 1 到 999 的每个数。
  2. 对每个数,找到所有因子并累加。
  3. 如果因子和等于该数,则输出该完数及其因子。
相关推荐
双翌视觉2 分钟前
曝光调不对,算法全白费:机器视觉的曝光三态解析
人工智能·算法·计算机视觉
ysu_031411 分钟前
02-单链表完全指南
c语言·数据结构·算法·leetcode
ltqshs20 分钟前
C语言-链表例程
c语言·开发语言·链表
生态学者22 分钟前
香港理工大学Nature Communications:沿海塑料际古菌组特征及生态影响
大数据·人工智能·算法·r语言·微信公众平台
Lyyaoo.26 分钟前
【链表】【中等】两数相加/倒N删除/两个交换/排序链表/LRU缓存
数据结构·链表·缓存
YYYing.27 分钟前
【C++进阶系列 (一)】关于线程堆栈的那些事 (上篇)
c语言·开发语言·c++·线程堆栈
Discipline~Hai28 分钟前
Linux网络编程05-sqlite3数据库
linux·c语言·网络·数据库·sqlite·linux应用软件编程
bro_Java66635 分钟前
链表进阶:链表笔试真题
数据结构·链表
ly-2725339 分钟前
IEEE PDF eXpress终稿检测踩坑记录:PDF图片字体未嵌入与LaTeX参考文献编译异常解决方法
服务器·人工智能·算法
代码不停1 小时前
子序列问题
java·算法