C语言求指定范围内的完数
时间: 2024-10-25 07:11:30 浏览: 34
使用函数输出指定范围内的完数.docx
在C语言中,求指定范围内(例如从1到n)的完数(Perfect Number),是指该数字的所有真因子(除了自身以外的因数)之和等于它本身的数。例如6是一个完数,因为它有1、2、3三个真因子,1+2+3=6。
以下是一个简单的C程序示例,用于找出给定范围内的所有完数:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPerfect(int num) {
int sum = 1; // 自然数1也是每个数的因子
for (int i = 2; i * i <= num; i++) { // 只需检查i * i <= n的情况,因为更大的因子已经包含在较小因子的和中了
if (num % i == 0) {
if (i != num / i) { // 如果i不是num的平方根,则添加两个因子
sum += i;
sum += num / i;
} else { // 否则只添加一个因子
sum += i;
}
}
}
return sum == num;
}
void findPerfectNumbersInRange(int start, int end) {
for (int i = start; i <= end; i++) {
if (isPerfect(i)) {
printf("%d 是一个完数。\n", i);
}
}
}
int main() {
int rangeStart, rangeEnd;
printf("请输入完数搜索的范围(开始值结束值,例如1 50): ");
scanf("%d %d", &rangeStart, &rangeEnd);
findPerfectNumbersInRange(rangeStart, rangeEnd);
return 0;
}
```
阅读全文