用C加加编写一个函数,确定一个整数是否为完全数,用这个函数确定和打印1到2千之间的所有完全数
时间: 2024-09-15 20:08:04 浏览: 55
在C语言中,我们可以创建一个函数来检查一个整数是否是完全数。完全数是指其所有真因数(除了自身之外的因子)之和等于该数本身的正整数。以下是实现该功能的简单代码,并遍历并打印1到2000之间的完全数:
```c
#include <stdio.h>
// 函数来检查一个数是否为完全数
int isPerfectNumber(int n) {
int sum = 1; // 自然数1始终是每个数的因数
for (int i = 2; i * i <= n; ++i) { // 只需检查到根号n,避免重复计数
if (n % i == 0) {
// 如果找到一个因子,也加上它的另一半(如果小于n)
if (i != n / i) {
sum += i;
sum += n / i;
} else {
sum += i; // 因为n/i已经在之前添加过了,这里是唯一的因子
}
}
}
// 如果总和等于原数,说明它是完全数
return sum == n && n > 1;
}
int main() {
printf("1 到 2000 之间的完全数有:\n");
for (int i = 1; i <= 2000; ++i) {
if (isPerfectNumber(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
阅读全文