C语言程序找出2~5000的完数
时间: 2024-10-23 22:15:29 浏览: 12
C语言程序_完数
在C语言中,一个完数是指该数的所有真因数(除了自身以外的因子)加起来等于它本身的数。例如,6是一个完数,因为它有因数1、2和3,它们相加正好等于6。
下面是一个简单的C语言程序,用于找出2到5000之间的所有完数:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPerfect(int num) {
int sum = 1; // 自然数1也是所有数的因子
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
sum += i;
if (i != num / i) { // 如果还有其他因子(即num不是完全平方数)
sum += num / i;
}
}
}
return sum == num;
}
int main() {
for (int i = 2; i <= 5000; i++) {
if (isPerfect(i)) {
printf("%d 是一个完数。\n", i);
}
}
return 0;
}
```
这个程序首先定义了一个`isPerfect`函数,通过遍历从2到`sqrt(num)`的所有整数,检查它们是否能整除给定的`num`。如果是,则将这两个因子加到总和中,并加上剩余因子(如果有的话)。最后,如果总和等于原数,那么就返回true,表示找到了一个完数。
阅读全文