用C语言循环语句一个数如果恰好等于它的因子之和,这个数就是“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程找出2到1000以内的所有完数并输出。
时间: 2024-10-09 18:01:10 浏览: 28
基于C语言判断一个数是否为素数+有注释.docx
要使用C语言编写程序找出2到1000之间的所有完数,你可以使用嵌套循环来遍历每个数及其因子,并检查它们的总和是否等于原数。以下是一个简单的示例代码:
```c
#include <stdio.h>
// 函数用于检查一个数是否是完数
int isPerfect(int num) {
int sum = 1; // 初始因子为1
for (int i = 2; i * i <= num; i++) { // 只需检查i * i <= num即可
if (num % i == 0) { // 如果i是因子
if (i != num / i) { // 避免重复因子
sum += i;
sum += num / i; // 同理,加上另一个因子
} else {
sum += i; // 如果i是num的平方根,则只加一次
}
}
}
return sum == num; // 如果sum等于num,返回1表示它是完数,否则返回0
}
int main() {
printf("2到1000之间的完数有:\n");
for (int i = 2; i <= 1000; i++) {
if (isPerfect(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
在这个程序中,`isPerfect`函数负责检查给定数是否为完数,`main`函数则循环遍历2到1000之间的每个数,并调用`isPerfect`函数。如果发现一个数是完数,就打印出来。
阅读全文