AcWing 725. 完全数
原题链接
简单
#include <stdio.h>
#include <stdbool.h>
// 判断一个数是否为完全数的函数
bool isPerfectNumber(int num) {
if (num <= 1) {
return false; // 1和负数都不是完全数
}
int sum = 0;
for (int i = 1; i * i <= num; i++) { // 只需要遍历到sqrt(num)即可
if (num % i == 0) {
sum += i;
if (i != num / i) { // 避免平方根被重复加(对于完全平方数)
sum += num / i;
}
}
}
return sum == num;
}
int main() {
int N;
scanf("%d", &N);
int numbers[N]; // 假设N不会太大,可以使用数组存储
for (int i = 0; i < N; i++) {
scanf("%d", &numbers[i]);
}
// 判断每个数是否是完全数,并输出结果
for (int i = 0; i < N; i++) {
if (isPerfectNumber(numbers[i])) {
printf("%d is perfect\n", numbers[i]);
} else {
printf("%d is not perfect\n", numbers[i]);
}
}
return 0;
}