用c语言找出1000之内的所有完数
时间: 2024-11-22 14:36:21 浏览: 18
在C语言中,完数(Perfect Number)是指一个正整数除了它的质因数以外,其和正好等于它本身的数。例如,6是一个完数,因为6 = 1 + 2 + 3。
下面是一个简单的程序,用于找出1000以内的所有完数:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0)
return false;
}
return true;
}
int sum_factors(int num) {
int sum = 1;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) {
if (i * i != num) {
sum += i;
sum += num / i;
} else {
sum += i;
}
}
}
return sum;
}
int main() {
int limit = 1000;
printf("完美数在1到%d范围内的有:\n", limit);
for (int i = 1; i <= limit; ++i) {
if (is_prime(i) && sum_factors(i) == i) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
这个程序首先定义了一个函数`is_prime`检查是否为质数,另一个函数`sum_factors`计算给定数字的所有因子之和。在主函数`main`里,我们遍历1到1000之间的每个数字,如果既是质数又是自身的因子之和,则打印出来。
阅读全文