用C语言编程求100之内的所有完数(一个数如果恰好等于它的因子之和,这个数就称为完数)
时间: 2024-12-20 11:14:52 浏览: 5
使用函数输出指定范围内的完数.docx
在C语言中,可以编写一个函数来检查每个小于100的正整数是否为完数。下面是一个简单的示例,展示了如何遍历并计算每个数的因子之和:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_perfect_number(int num) {
int sum = 1; // 初始化因子和为1,因为1肯定是任何一个数的因子
for (int i = 2; i * i <= num; i++) { // 只需要检查i * i <= n的情况,因为大于sqrt(n)的因子和已经包含在了小于它的因子里
if (num % i == 0) {
// 如果i是因子,则sum加上i;同时,因为num还可以被i的另一个因子整除(即num/i),所以也要加上那个因子(num/i)
if (i != num / i) {
sum += i + num / i;
} else {
sum += i; // 如果i就是num的唯一因子,直接加上
}
}
}
return sum == num && num > 1; // 返回num是否等于它的因子和,并排除掉1(因为1不是完美数)
}
int main() {
printf("100以内的完美数有:\n");
for (int num = 2; num < 100; num++) {
if (is_perfect_number(num)) {
printf("%d ", num);
}
}
return 0;
}
```
当运行这段程序,它将显示100以内的所有完美数。
阅读全文