C语言程序设计100道真题-1000以内的所有完数(正因子之和)

博客围绕编程找出1000以内完数展开。先给出完数定义,如6=1+2+3。接着分析解题思路,即循环2 - 1000的数,找出因子并求和与原数对比。最后详细解析了用C语言实现该功能的代码逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

分析

循环出2-1000的所有数,查找每一个数的因子,组成因子之和。将因子这和对比原数。

代码

#include <stdio.h> 
/*
一个数如果恰好等于它的因子之和,
这个数就称为"完数"。例如6=1+2+3.
编程找出1000以内的所有完数。
*/
int main(){
	int i,j,k=0;
	for(i=2;i<=1000;i++,k=0){
		for(j=1;j<i;j++)
		if(i%j==0) k+=j;
		if(k==i) 
		printf("%d\n",i);
	}
}

代码解析

  1. 包含标准输入输出头文件#include <stdio.h>

  2. 定义main函数,程序的入口点。

  3. 声明三个整型变量ijk,其中i用于遍历1到1000的整数,j用于寻找i的因子,k用于累加i的因子之和。

  4. 使用for循环,从2遍历到1000(包含1000),因为1不是完数。

  5. 在每次外层循环开始时,将k重置为0,以准备计算当前数i的因子之和。

  6. 使用内部for循环,从1遍历到i-1,查找i的所有因子。

  7. 对于内部循环中的每个j,如果i能被j整除(即i % j == 0),则将j累加到k中。

  8. 内部循环结束后,检查k是否等于i。如果相等,说明i是一个完数,于是使用printf函数打印出i

  9. 外层循环继续执行,直到遍历完所有1000以内的整数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彪哥.TOP

稀罕作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值