用c语言判断,输入一个数,是否是完数
时间: 2024-09-19 17:10:27 浏览: 48
在C语言中,一个完全数是指它的所有真因数(除了自身之外的正因子)之和等于它本身的数。例如,6是一个完全数,因为1+2+3=6。下面是一个简单的程序来判断用户输入的数是否是完全数:
```c
#include <stdio.h>
int isPerfectNumber(int num) {
int sum = 1; // 初始化为1,因为1总是真因数之一
for (int i = 2; i * i <= num; i++) { // 只需要检查到根号num,因为大于根号的因数会有一个对应的较小因数已经被考虑过
if (num % i == 0) {
if (i != num / i) { // 如果当前因数不是最大的,则添加两倍
sum += i;
sum += num / i;
} else { // 如果是最大因数(等于num/i),只添加一次
sum += i;
}
}
}
return sum == num; // 返回sum是否等于num,即判断是否是完全数
}
int main() {
int input;
printf("请输入一个整数:");
scanf("%d", &input);
if (isPerfectNumber(input)) {
printf("%d是完全数。\n", input);
} else {
printf("%d不是完全数。\n", input);
}
return 0;
}
```
在这个程序中,`isPerfectNumber`函数通过计算输入数的因数之和来判断是否为完全数。主函数中读取用户的输入,并调用`isPerfectNumber`函数判断。
阅读全文