写一段C语言代码,输出1000以内的所有完数和它的因子
时间: 2024-12-02 20:22:30 浏览: 16
在C语言中,完数是指一个正整数等于其除自身以外的所有因数之和。以下是段代码,它会找出并打印出1000以内的所有完数及其因子:
```c
#include <stdio.h>
#include <stdbool.h>
// 函数用于检查是否为因子
bool is_factor(int num, int factor) {
return (factor > 0 && factor <= num && num % factor == 0);
}
// 找出并打印完数
void find_perfect_numbers(int limit) {
for (int i = 2; i <= limit; ++i) {
int sum = 1; // 自身是一个因子
for (int j = 2; j * j <= i; ++j) { // 只需要检查到sqrt(i)
if (is_factor(i, j)) {
sum += j;
if (is_factor(i, i / j)) { // 检查是否存在另一个因子
sum += i / j;
}
}
}
if (sum == i) {
printf("%d 是完数,它的因子有:", i);
for (int k = 1; k <= sum; ++k) {
if (is_factor(i, k)) {
printf("%d ", k);
}
}
printf("\n");
}
}
}
int main() {
int limit = 1000;
find_perfect_numbers(limit);
return 0;
}
```
阅读全文