求某100-200范围内完数的个数。并逐个数输出此完数的因子是多少。写出可实现的c语言代码
时间: 2024-12-15 18:27:29 浏览: 10
要编写C语言代码来找出100到200范围内的完美数,并输出每个完美数的所有因子,可以参考以下代码:
```c
#include <stdio.h>
#include <stdbool.h> // 引入bool类型
// 定义一个函数检查一个数是否为完全数
bool isPerfectNumber(int num) {
int sum = 1; // 初始化因子和为1
for (int i = 2; i * i <= num; i++) { // 遍历从2到sqrt(num),因为大于sqrt(num)的因子已包含在内
if (num % i == 0) {
// 如果i是因子,则添加到总和中,同时考虑num/i也是因子,除非它等于i
if (i != num / i)
sum += i + num / i;
else
sum += i; // 如果i等于num/i,则只加一次
}
}
return sum == num && num > 1; // 返回sum是否等于num,以及num是否大于1(排除1本身)
}
int main() {
int start = 100, end = 200; // 定义搜索范围
int perfectCount = 0; // 记录完美数的数量
printf("完美数及其因子:\n");
for (int num = start; num <= end; num++) {
if (isPerfectNumber(num)) {
printf("%d 是一个完美数,它的因子有:\n", num);
for (int factor = 1; factor <= num; factor++)
if (num % factor == 0) // 输出所有因子
printf("%d ", factor);
printf("\n");
perfectCount++;
}
}
printf("在%d到%d之间共有%d个完美数。\n", start, end, perfectCount);
return 0;
}
```
这段代码首先定义了一个`isPerfectNumber`函数,用于检查一个数字是否是完美数。接着,在主函数`main`中遍历100到200之间的数字,找出并打印出完美的数及它们的因子。
阅读全文