wwWsir 发表于 2023-3-19 21:09:45

为什么无论输入什么值输出都是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;
}

傻眼貓咪 发表于 2023-3-19 21:19:35

#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;
}

ouyunfu 发表于 2023-3-20 08:46:39

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]
查看完整版本: 为什么无论输入什么值输出都是not perfect