如果一个数的真因子之和等于其本身,这个数称为完数,c语言代码实现输入一个整数num,找出2~num中的所有完数
时间: 2024-12-17 09:54:10 浏览: 5
C语言判断一个数是否为素数方法解析
5星 · 资源好评率100%
在 C 语言中,你可以通过遍历从 2 到给定整数 num 的范围,并检查每个数是否是它的真因子之和等于它自身的数字,来实现找出该范围内所有的完数。以下是简单的代码示例:
```c
#include <stdio.h>
// 函数声明
int isPerfect(int num);
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
printf("2到%d之间的完数有:\n", num);
for (int i = 1; i <= num; ++i) { // 遍历从1到num
if (isPerfect(i)) {
printf("%d ", i); // 输出找到的完数
}
}
return 0;
}
// 检查一个数是否是完数
int isPerfect(int num) {
int sum = 1; // 初始化和为1,因为1也是每个数的真因子
for (int i = 2; i * i <= num; ++i) { // 只需检查到根号num即可
if (num % i == 0) { // 如果i是num的因子
if (i != num / i) { // 如果不是自身除以i,说明还有一个因子
sum += i;
sum += num / i;
} else {
sum += i; // 如果是自身除以i,就只加一次
}
}
}
// 如果sum等于num,那么num就是完数
return sum == num;
}
阅读全文