完全数统计:请用c语言编写一个程序,计算并输出 n 以内的所有完全数。其中,n 是[1,1000000]区间内的数,由用户从键盘输入。 相关知识 循环和条件判断:使用循环语句和条件判断语句来判断一个数是否是完全数。 错误处理:使用条件判断来检查用户输入的合法性,避免程序出错。
时间: 2024-09-26 09:10:09 浏览: 32
为了实现这个功能,我们需要一个循环遍历1到n范围内的每个数字,然后对每个数调用之前编写的`isPerfectNumber`函数进行检查。如果一个数是完全数,我们就将其打印出来。以下是相应的C语言程序:
```c
#include <stdio.h>
#include <stdbool.h> // 引入布尔类型
// 判断是否为完全数的函数
bool isPerfectNumber(int num) {
int sum = 1;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
sum += i;
if (i != num / i) {
sum += num / i;
}
}
}
return sum == num;
}
int main() {
int n;
// 请求用户输入n,边界检查
while (true) {
printf("请输入一个正整数n (1 to 1000000): ");
if (scanf("%d", &n) == 1 && n >= 1 && n <= 1000000) {
break;
}
printf("输入无效,请重新输入:\n");
// 清理输入缓冲区
scanf("%*[^\n]");
}
printf("在1到%d之间的完全数有:\n", n);
for (int i = 1; i <= n; i++) {
if (isPerfectNumber(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}