C语言判断一个数是否是完数
时间: 2024-11-06 18:22:10 浏览: 33
C语言 判断一数是否为素数且输出完数分解因数
在C语言中,判断一个数是否是完数(Perfect Number),通常是指该数的所有真因数(除了自身外的正因子)加起来正好等于它本身的数。例如,6是一个完数,因为它有三个因数1、2和3,它们相加等于6。
下面是一个简单的函数示例,用于检查一个整数n是否是完数:
```c
#include <stdio.h>
// 函数声明
int isPerfect(int n);
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
if (isPerfect(num)) {
printf("%d 是一个完数。\n", num);
} else {
printf("%d 不是完数。\n", num);
}
return 0;
}
// 完数检测函数
int isPerfect(int n) {
int sum = 0; // 初始化因子和为0
for (int i = 1; i * i <= n; i++) { // 只需检查到 sqrt(n)
if (n % i == 0) {
// 如果i是因子,那么它的另一个因子是 n / i
sum += i;
if (i != n / i) { // 当i不等于n/i时,说明还有一个因子
sum += n / i;
}
}
}
// 如果因子之和等于原数,则是完数,反之则不是
return sum == n ? 1 : 0;
}
```
阅读全文