用C语言找到2到5000的完数
时间: 2024-11-20 15:55:21 浏览: 8
查找1到n的完数(c语言版)
4星 · 用户满意度95%
在C语言中,完数也称为完美数,是指它的所有真因子(除了自身以外的因子)加起来等于它本身的数。例如,6是一个完数,因为1+2+3=6。
要找出2到5000之间的所有完数,可以编写一个程序,通过遍历每个数,计算它的所有真因子之和,并检查这个和是否等于原数。以下是简单的步骤:
1. 定义一个函数 `isPerfect(int num)` 来检查一个数是否是完数。
2. 使用for循环从2到5000,对每个数调用 isPerfect 函数。
3. 如果函数返回true,就将该数打印出来。
下面是C语言代码示例:
```c
#include <stdio.h>
// 判断一个数是否为完数
int isPerfect(int n) {
int sum = 1; // 自然数1是所有非零偶数因子的基础
for (int i = 2; i * i <= n; i++) { // 只需要检查到 sqrt(n)
if (n % i == 0) {
if (i * i != n) { // 如果因子不是完全平方,则有两个因子
sum += i;
}
if (i != n / i) { // 如果还有另一个因子,比如 n = i * j (j > i),则加入它
sum += n / i;
}
}
}
return sum == n && n != 1; // 因为1不算完数,所以最后还要排除掉它
}
int main() {
for (int i = 2; i <= 5000; i++) {
if (isPerfect(i)) {
printf("%d 是完数。\n", i);
}
}
return 0;
}
```
阅读全文