请求一个程序或算法,当输入一个正整数 n 时,能够列出并计算从1到n范围内的所有完数(即一个数等于其因子之和的数)
时间: 2024-12-19 11:27:29 浏览: 4
输入一个正整数作为范围,然后程序会找出在该范围内的完数.pdf
要编写一个程序来查找1到n范围内的所有完数,你可以使用以下C语言代码。这个程序首先定义了一个函数`isPerfectNumber()`用于检查一个数是否为完数,然后主函数`main()`遍历指定范围内的数字并调用该函数。
```c
#include <stdio.h>
// 完数判断函数
int isPerfectNumber(int num) {
int sum = 0;
for (int i = 1; i * i <= num; i++) { // 只需检查到√num,因为因子对都是成对出现的
if (num % i == 0) {
if (i != num / i) { // 如果不是自己本身,则累加两个因子
sum += i;
sum += num / i;
} else {
sum += i; // 如果是自身,则只加一次
}
}
}
return sum == num; // 如果总和等于原数,那么它是完数
}
int main() {
int n, i;
printf("Enter a positive integer: ");
scanf("%d", &n);
printf("Perfect numbers between 1 and %d are:\n", n);
for (i = 1; i <= n; i++) {
if (isPerfectNumber(i)) {
printf("%d ", i);
}
}
return 0;
}
```
运行这个程序后,它会要求用户输入一个正整数n,然后输出1到n之间所有的完数。
阅读全文