c语言:一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为完全数。 例如,6就是一个完全数,因为它的除了本身以外的其他约数的和为 1+2+3 = 6。 现在,给定你N个整数,请你依次判断这些数是否是完全数。
时间: 2024-10-17 15:13:09 浏览: 51
在C语言中,判断一个数是否为完全数的过程通常会涉及到遍历从1到该数的所有因子并计算它们的和。以下是步骤:
1. 定义一个函数`isPerfectNumber(int num)`,接收一个整数作为输入。
2. 初始化一个变量`sum`为0,用于存储因子之和。
3. 使用for循环,从1开始遍历到num的平方根(因为大于sqrt(num)的因子已经包含了一个因子对,比如num=15,因子对就是3和5,不需要额外检查),如果当前数能整除num,则它是因子,将它加入`sum`。
4. 如果当前因子加自身等于num,说明找到了一个满足条件的因子(包括自身),然后更新`sum`。
5. 循环结束后,检查`sum`是否等于`num`,若相等则返回true,表示这个数是完全数;否则返回false。
```c
#include <stdio.h>
#include <math.h>
int isPerfectNumber(int num) {
int sum = 1;
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
sum += i;
if (i != num / i) { // 如果不是自身(防止重复计数)
sum += num / i;
}
}
}
return sum == num;
}
int main() {
int N, number;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d", &number);
if (isPerfectNumber(number)) {
printf("%d is a perfect number.\n", number);
} else {
printf("%d is not a perfect number.\n", number);
}
}
return 0;
}
```
阅读全文