C语言仅用循环找出1000以内的完数
时间: 2024-11-21 18:26:20 浏览: 24
在C语言中,完数是指一个数的所有真因子(除了自身外的因数)之和等于该数本身的数。例如,6是一个完数,因为1 + 2 + 3 = 6。要找出1000以内的所有完数,我们可以使用嵌套循环结构来遍历每个可能的数,并检查它的因子是否满足条件。
下面是一个简单的C程序示例:
```c
#include <stdio.h>
// 函数声明:用于计算一个数的因子和并判断是否为完数
int isPerfect(int num);
int main() {
int i, j;
for (i = 1; i <= 1000; ++i) {
if (isPerfect(i)) {
printf("%d 是1000以内的一个完数。\n", i);
}
}
return 0;
}
// 判断函数,检查num的所有因子之和是否等于num
int isPerfect(int num) {
int sum = 0;
for (j = 1; j * j <= num; ++j) { // 只需要考虑小于等于sqrt(num)的因子
if (num % j == 0) {
// 如果j是因子,那么它的另一半也是因子(除非num是完全平方数)
if (j != num / j)
sum += j + num / j;
else
sum += j;
}
}
return sum == num;
}
```
阅读全文