一个数如果恰好等于它的因子之和,这个数就称为“完数”。用c语言求1000内的完数
时间: 2024-09-22 22:06:52 浏览: 173
C语言入门习题:寻找完数(输出形式为“数字,数字,……,数字”)
5星 · 资源好评率100%
在 C 语言中,我们可以创建一个函数来检查某个数是否为完数。完数是指一个正整数的所有真因数(除了自身外的因子)之和正好等于它本身的数。下面是一个简单的示例,该程序遍历 1 到 1000 的所有数字,计算每个数字的因子之和,并检查是否相等:
```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) {
// 如果i是因子,那么i和num/i也是因子(除本身外)
sum += i;
if (i != num / i) { // 如果不是num自身的平方根,则添加另一个因子
sum += num / i;
}
}
}
return sum == num; // 如果sum等于num,说明它是完数,返回true;反之false
}
int main() {
for (int i = 1; i <= 1000; i++) {
if (isPerfectNumber(i)) {
printf("%d 是1000以内的完美数\n", i);
}
}
return 0;
}
```
阅读全文