为什么无论输入什么值输出都是not perfect
题目:一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为完全数。例如,6就是一个完全数,因为它的除了本身以外的其他约数的和为 1+2+3=6。现在,给定你 N个整数,请你依次判断这些数是否是完全数
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=0; i<n; i++){
int a, sum=0;
cin>>a;
for(int x=1; x<a; x++){
if(a%x != 0)sum+=x;
}
if(sum == a ) cout<<a<<" is perfect"<<endl;
else cout<<a<<" is not perfect"<<endl;
}
return 0;
} #include <cstdio>
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int a, sum = 0;
cin >> a;
for (int x = 1; x < a; x++) {
if (a % x == 0) sum += x; // <-----------------------------------------------------------
}
if (sum == a) cout << a << " is perfect" << endl;
else cout << a << " is not perfect" << endl;
}
return 0;
}
C语言:#include <stdio.h>
int is_perfect_number(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum == n;
}
int main() {
int N;
printf("请输入要判断的整数个数:");
scanf("%d", &N);
for (int i = 0; i < N; i++) {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (is_perfect_number(num)) {
printf("%d 是完全数\n", num);
} else {
printf("%d 不是完全数\n", num);
}
}
return 0;
}
Python实现:def is_perfect_number(n):
factors =
return sum(factors) == n
N = int(input("请输入要判断的整数个数:"))
for i in range(N):
num = int(input("请输入一个整数:"))
if is_perfect_number(num):
print("{} 是完全数".format(num))
else:
print("{} 不是完全数".format(num))
页:
[1]