用c语言求出100以内的完数以及他们的和
时间: 2024-12-08 07:24:07 浏览: 12
1000以内的完数
5星 · 资源好评率100%
在C语言中,完数也被称为完美数,是指一个大于1的自然数,它所有的真因数(除了自身以外的因数)之和恰好等于这个数本身。例如,6是一个完数,因为它的因数有1、2和3,它们的和正好是6。
下面是一个简单的程序,用于找出100以内的所有完数,并计算它们的和:
```c
#include <stdio.h>
// 函数声明:检查是否是完数
int isPerfect(int num);
int main() {
int sum = 0; // 初始化和为0
for (int i = 1; i <= 100; ++i) { // 遍历1到100
if (isPerfect(i)) { // 如果i是完数
printf("%d 是一个完数,", i);
sum += i; // 将该数加到总和上
}
}
printf("100以内所有完数的和是:%d\n", sum); // 输出结果
return 0;
}
// 完数检查函数
int isPerfect(int num) {
int sum = 1; // 真因数初始值设为1(包括自身)
for (int i = 2; i * i <= num; ++i) { // 遍历从2到sqrt(num)
if (num % i == 0) { // 如果i是num的因数
sum += i; // 加入真因数
if (i != num / i) { // 若i不是num的完全平方根,则另一个因数也是
sum += num / i;
}
}
}
return sum == num; // 返回sum是否等于num判断是否是完数
}
```
当你运行这段代码,它会打印出100以内所有的完数及其和。注意,这个程序对于大数值效率不高,实际应用中可以考虑优化。
阅读全文