如何用c语言判断自守数
时间: 2024-10-25 19:10:06 浏览: 25
C语言趣味算法
在C语言中判断一个数字是否是自守数(Perfect Number),即一个数的所有真因子(除了自身以外的因数)之和等于该数本身的数。以下是一个简单的步骤:
1. 定义一个函数 `isPerfectNumber`,接受一个整数参数 `n`。
2. 初始化一个变量 `sum` 用于存储 `n` 的所有真因子之和,初始值设为0。
3. 使用for循环遍历从1到 `sqrt(n)`(取整数部分,因为大于这个范围的因子一定不会影响完美数的判定):
a. 如果 `n` 能够被当前的循环变量整除,则它是因子,将它加到 `sum` 中,并同时更新 `n` 为 `n / factor`(去除已找到的因子)。
4. 判断 `sum` 是否等于 `n`,如果相等,则返回 `true` 表示 `n` 是自守数;否则返回 `false`。
5. 函数定义和主程序中调用 `isPerfectNumber` 来检查输入的数字。
```c
#include <stdio.h>
#include <math.h>
int isPerfectNumber(int n) {
int sum = 0;
for (int i = 1; i <= sqrt(n); i++) {
if (n % i == 0) {
if (i * i != n) { // 非平方因子
sum += i;
}
if (n / i != i) { // 另一个因子(可能相同)
sum += n / i;
}
}
}
return sum == n;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (isPerfectNumber(num)) {
printf("%d 是一个自守数。\n", num);
} else {
printf("%d 不是自守数。\n", num);
}
return 0;
}
阅读全文