用c语言求2到10000有多少完全数,最大的完全数是多少
时间: 2024-09-25 10:02:59 浏览: 69
在C语言中,我们可以编写一个程序来找出2到10000之间的所有完全数以及其中的最大值。完全数是指它的因子(除了自身外)之和等于该数本身的自然数。首先我们需要一个函数来检查一个数是否为完全数,然后遍历给定范围内的数字。
```c
#include <stdio.h>
#include <stdbool.h>
bool isPerfectNumber(int num) {
int sum = 1; // 自然数的因子包括1
for (int i = 2; i * i <= num; ++i) { // 只需检查到sqrt(num),因为大于这个值的因子都已包含在内
if (num % i == 0) {
sum += i;
if (i != num / i) { // 如果不是质因数的平方,则还要加上另一个因子
sum += num / i;
}
}
}
return sum == num && num > 1; // 验证sum是否等于num,排除1
}
int main() {
int largestPerfectNum = 0; // 初始化最大完美数为0
for (int i = 2; i <= 10000; ++i) {
if (isPerfectNumber(i)) {
printf("%d 是一个完全数,\n", i);
largestPerfectNum = i; // 更新最大值
}
}
printf("2到10000之间最大的完全数是: %d\n", largestPerfectNum);
return 0;
}
```
阅读全文