编写C语言程序,输入正整数n,求n之内的所有完数
时间: 2024-12-20 16:27:33 浏览: 5
在C语言中,一个完数也被称为完美数,是指一个大于1的自然数,它所有的真因数(除了自身以外的因子)相加的结果恰好等于这个数本身。下面是一个简单的C程序,用于输入一个正整数n并找出该范围内所有的完数:
```c
#include <stdio.h>
// 定义一个函数来检查是否为完数
int isPerfect(int num) {
int sum = 0;
for (int i = 1; i * i <= num; i++) {
if (num % i == 0) {
// 如果i是因子,那么它的平方也是因子,除非它是num的平方根
if (i != num / i)
sum += i + num / i;
else
sum += i;
}
}
return sum == num && num > 1; // 只有当sum等于num且num大于1时才返回1,表示是完数
}
int main() {
int n, num;
printf("请输入一个正整数n: ");
scanf("%d", &n);
printf("n范围内的完数有:\n");
for (num = 1; num <= n; num++) {
if (isPerfect(num)) {
printf("%d ", num);
}
}
return 0;
}
```
在这个程序中,我们首先定义了一个`isPerfect`函数来检查一个数是否是完数。然后在主函数里,让用户输入一个正整数n,并遍历从1到n的所有数字,如果某个数是完数,则打印出来。
阅读全文