鱼C论坛

 找回密码
 立即注册
查看: 2110|回复: 2

为什么无论输入什么值输出都是not perfect

[复制链接]
发表于 2023-3-19 21:09:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为完全数。例如,6就是一个完全数,因为它的除了本身以外的其他约数的和为 1+2+3=6。
现在,给定你 N个整数,请你依次判断这些数是否是完全数
  1. #include<cstdio>
  2. #include<iostream>
  3. using namespace std;
  4. int main(){
  5.     int n;
  6.     cin>>n;
  7.     for(int i=0; i<n; i++){
  8.         int a, sum=0;
  9.         cin>>a;
  10.         for(int x=1; x<a; x++){
  11.             if(a%x != 0)sum+=x;
  12.         }
  13.         if(sum == a ) cout<<a<<" is perfect"<<endl;
  14.         else cout<<a<<" is not perfect"<<endl;
  15.     }
  16.     return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-3-19 21:19:35 | 显示全部楼层
  1. #include <cstdio>
  2. #include <iostream>
  3. using namespace std;

  4. int main() {
  5.     int n;
  6.     cin >> n;
  7.     for (int i = 0; i < n; i++) {
  8.         int a, sum = 0;
  9.         cin >> a;
  10.         for (int x = 1; x < a; x++) {
  11.             if (a % x == 0) sum += x; // <-----------------------------------------------------------
  12.         }
  13.         if (sum == a) cout << a << " is perfect" << endl;
  14.         else cout << a << " is not perfect" << endl;
  15.     }
  16.     return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-20 08:46:39 | 显示全部楼层
C语言:
  1. #include <stdio.h>

  2. int is_perfect_number(int n) {
  3.     int sum = 0;
  4.     for (int i = 1; i < n; i++) {
  5.         if (n % i == 0) {
  6.             sum += i;
  7.         }
  8.     }
  9.     return sum == n;
  10. }

  11. int main() {
  12.     int N;
  13.     printf("请输入要判断的整数个数:");
  14.     scanf("%d", &N);
  15.     for (int i = 0; i < N; i++) {
  16.         int num;
  17.         printf("请输入一个整数:");
  18.         scanf("%d", &num);
  19.         if (is_perfect_number(num)) {
  20.             printf("%d 是完全数\n", num);
  21.         } else {
  22.             printf("%d 不是完全数\n", num);
  23.         }
  24.     }
  25.     return 0;
  26. }
复制代码


Python实现:
  1. def is_perfect_number(n):
  2.     factors = [i for i in range(1, n) if n % i == 0]
  3.     return sum(factors) == n

  4. N = int(input("请输入要判断的整数个数:"))
  5. for i in range(N):
  6.     num = int(input("请输入一个整数:"))
  7.     if is_perfect_number(num):
  8.         print("{} 是完全数".format(num))
  9.     else:
  10.         print("{} 不是完全数".format(num))
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 17:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表