请用【C语言】帮我写一段代码,所有真约数(除本身之外的所有正约数)的和等于它本身的正整数叫做完全数,试统计100之内有多少完全数,并输出这些完全数
时间: 2024-11-29 19:36:09 浏览: 20
在C语言中,我们可以编写一个函数来检查每个数字是否是完全数,然后遍历1到100之间的所有数字。下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPerfectNumber(int num) {
int sum = 1; // 先加1是因为1也是每个非负整数的约数
for (int i = 2; i * i <= num; i++) { // 只需检查到√n即可
if (num % i == 0) {
sum += i;
if (i != num / i) { // 如果还有另一个约数,也要加上
sum += num / i;
}
}
}
return sum == num; // 如果sum等于num,则num是完全数
}
int main() {
int perfect_count = 0; // 完全数计数器
int perfect_numbers[10]; // 存储100内的完美数
for (int i = 1; i <= 100; i++) {
if (isPerfectNumber(i)) {
perfect_count++;
perfect_numbers[perfect_count - 1] = i; // 添加完美数到数组
}
}
printf("在100以内有%d个完全数:\n", perfect_count);
for (int i = 0; i < perfect_count; i++) {
printf("%d ", perfect_numbers[i]);
}
printf("\n");
return 0;
}
```
当你运行这个程序,它会输出100以内所有的完全数及其个数。
阅读全文