用C语言编写1000的所有完数
时间: 2024-11-03 10:21:03 浏览: 22
完数是指一个正整数除了自身以外,所有真因子(即除自身外的因数)之和正好等于该数本身。例如6是一个完数,因为它的因子有1、2、3,它们的和加起来恰好是6。
在C语言中,我们可以遍历1到某个范围内的所有整数,然后检查每个数是否是完数。以下是简单的一个示例程序,用于找出小于1000的所有完数:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPerfectNumber(int num) {
int sum = 1;
for (int i = 2; i * i <= num; i++) { // 只需考虑i * i <= n的情况,因为大于sqrt(n)的因子已包含在之前
if (num % i == 0) {
if (i != num / i) { // 非重复因子
sum += i;
sum += num / i;
} else { // 如果i是num的平方根,无需重复添加
sum += i;
}
}
}
return sum == num && num > 1; // 检查sum是否等于num,并排除1这个特殊情况
}
int main() {
printf("Perfect numbers less than 1000:\n");
for (int num = 1; num < 1000; num++) {
if (isPerfectNumber(num)) {
printf("%d ", num);
}
}
return 0;
}
```
阅读全文