用c语言输入一千以内的完数
时间: 2024-10-21 20:01:53 浏览: 11
C语言期末经典程序填空题
在C语言中,一个完数是指它的所有真因数(除了自身之外的因子)加起来等于它本身的数。例如,6是一个完数,因为它有因数1、2和3,它们之和正好等于6。我们可以编写一个程序,让用户输入一个范围,然后检查在这个范围内是否存在完数。这里有一个简单的示例:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_perfect_number(int num) {
long long sum = 1;
for (int i = 2; i * i <= num; i++) { // 遍历到sqrt(n)
if (num % i == 0) {
// 如果i是因子,那么num/i也是因子
sum += i;
if (i != num / i) { // 如果i不是num/i,意味着还有一个因子
sum += num / i;
}
}
}
return sum == num && num > 1; // 完数大于1且总和等于本身
}
int main() {
int max_num;
printf("请输入一个整数作为上限(不超过1000): ");
scanf("%d", &max_num);
printf("在%d以内的完数有:\n", max_num);
for (int i = 1; i <= max_num; i++) {
if (is_perfect_number(i)) {
printf("%d ", i); // 输出找到的完数
}
}
return 0;
}
阅读全文