求1000以内的完数 c语言,
时间: 2024-11-27 22:10:53 浏览: 3
20级C语言试题A.doc
在C语言中,一个"完数"是指一个数的所有真因数(除了自身以外的因数)之和等于它自身的数。例如,6是一个完数,因为它的因数有1、2和3,它们的和正好是6。
下面是一个简单的C程序,用于找出1000以内的所有完数:
```c
#include <stdio.h>
// 函数声明
int sum_of_divisors(int num);
int main() {
int i;
printf("寻找1000以内的完数:\n");
for (i = 1; i <= 1000; i++) {
if (sum_of_divisors(i) == i) {
printf("%d 是一个完数\n", i);
}
}
return 0;
}
// 计算一个数的真因数之和
int sum_of_divisors(int num) {
int sum = 0;
for (int j = 1; j * j <= num; j++) {
if (num % j == 0) {
// 如果j是因数,那么它的另一个因数是num / j,但可能已经计算过了,所以只加一次
if (j != num / j) {
sum += j + num / j;
} else {
sum += j; // 如果j和num/j相等,则直接加上j
}
}
}
return sum;
}
```
阅读全文