c语言输出1000以内完数及因子
时间: 2024-12-28 22:40:24 浏览: 4
在C语言中,一个完数是指它的所有真因数(除了它自身以外的正因数)之和等于该数本身的数。例如,6是一个完数,因为1+2+3=6。以下是用C语言编写的一个简单程序,用于找出并打印1000以内的所有完数以及它们的因子:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_factor(int num, int i) {
return (num % i == 0);
}
bool is_perfect_number(int num) {
int sum = 1;
for (int i = 2; i * i <= num; i++) {
if (is_factor(num, i)) {
sum += i;
if (i != num / i) { // 如果还有另一个因子,比如num/i
sum += num / i;
}
}
}
return (sum == num && num > 1); // 只有当sum等于num且大于1才是完数
}
void print_factors_and Perfects(int limit) {
for (int i = 2; i <= limit; i++) {
if (is_perfect_number(i)) {
printf("%d is a perfect number with factors: ", i);
for (int j = 1; j <= i; j++) {
if (is_factor(i, j)) {
printf("%d ", j);
}
}
printf("\n");
}
}
}
int main() {
int limit = 1000;
print_factors_and_Perfects(limit);
return 0;
}
```
当你运行这个程序,它会输出1000以内的所有完数及其对应的因子。
阅读全文