当前位置: 首页 > 知识库问答 >
问题:

显示每个完美数字的程序

秦伯寅
2023-03-14

我的代码运行,但对于其中一个测试,当我只需要一个输出时,会打印两个输出。我不确定如何避免这种情况。

这就是任务:

编写一个应用程序,显示从2到1000的每个完美数字。一个完美数等于所有被平均分割的数之和。例如,6是完美的,因为1、2和3等分,它们的和是6;然而,12不是一个完美的数字,因为1,2,3,4,6等分,它们的总和大于12。

提供的模板列出了for循环的首字母,以检查从2开始到1000的每个数字。在这个for循环中,将调用perfect()方法,在这里,如果每个数字都符合上述条件,您将提交一段代码进行测试。

如果满足这些条件,则将result设置为true,并使用sum将方法参数中可被int n整除的数字相加。

public class Perfect{
public static void main (String args[]){
  final int MAX = 1000;
  for(int i = 2; i <= MAX; i++)
  if(perfect(i) == true)
  System.out.println("The number " + i + " is perfect");
}

 public static boolean perfect(int n){
  int sum = 1;
  int i;
  boolean result = false;
    for (i = 2; i < n / 2; i++) {
        if (n % i == 0) {
            sum += i;
        }
    }
  if (sum == i) {
  return true;
  }
  else {
  return false;
  }
 }
}

我的输出:数字496是完美的数字729是完美的

预期输出:数字496是完美的

它只希望打印第一行。。。

共有3个答案

钦楚青
2023-03-14

根据这个问题,你必须打印出所有的完美数字。我创建了一个小片段,试试看。

    public void printPerfect() {

        for(int i=2;i<1000;i++) {
            List<Integer> l =factors(i);
            int sum =0;
            for (Integer factor : l) {
                sum+=factor;
            }
            if(sum==i) {
                System.out.println("perfect-- " +i);
            }
        }


    }

List<Integer> factors(int number) {
        List<Integer> l = new ArrayList<Integer>();
        for(int i = 1; i <= number; ++i) {
            if (number % i == 0) {
                if(i!=number)
                    l.add(i);
            }
        }
        return l;
    }
欧阳意蕴
2023-03-14

首先,我不知道你是否使用了正确的公式。但是,你应该知道第一个完全数是6,28,496和8128。729不是一个完美的数字。

希望有帮助。

    public static void main(String[] args) {
        int i, j, s;
        System.out.println("Perfect numbers 1 to 1000: ");
        for(i=1;i<=1000;i++){    
            s=0;
            for(j=1;j<i;j++){ 
                 if(i%j==0){
                    s=s+j;  
                 }
            }
          if(i==s){           //if i == s is perfect
                 System.out.println(i);
              }
        }
    }
}
李敏学
2023-03-14

您需要将sum与原始数字n进行比较,而不是i。您需要在循环条件中添加1,否则它将错过偶数中的最后一个除法器

public static boolean perfect(int n){
    int sum = 1;
    for (int i = 2; i < (n / 2) + 1; i++) {
        if (n % i == 0) {
            sum += i;
        }
    }
    return sum == n;
}
 类似资料:
  • 我是Java新手,为了练习,我在互联网上找到了一项任务: "在你输入的两个数字之间找到所有完美的数字。" 顺便说一下——一个完美的数字是一个自然数,等于它所有除数的和。所以我开始工作,遇到了这样一个问题,当我输入两个数字时。 例如:,我在控制台中得到正确答案:。但是,如果第一个数字是,例如,,第二个是,我会将此输出输出到控制台:,而我应该只得到。也就是说,出于某种原因,最小值不会缩短对完美数的搜索

  • 我做了一个关于1-1000之间的完美数的家庭作业,其中一个数等于它的除数之和。我找到了正确的代码来检查一个数字是否是一个完美的数字,并发现这些数字是1,6,28,496(我不知道为什么会包括1,但我老师的例子中包括了1)。我的问题很简单。我希望得到的结果是: 1=1 6=123 28=124714 496=123816162124248 但我最终得到的结果是: 1=1 6=1234 496=123

  • 例如,243是3的完美幂,因为243=3^5。 我以前一直在使用,我认为它工作得很好,但后来我用上面的示例尝试了它,由于浮点运算,它实际上返回了4.99999999999。所以它只适用于非常小的数字,我发现不到大约100个。 我想我可以用一个循环来重复乘法。。。i、 将i设置为3,然后设置为9,然后设置为27,然后设置为81,然后设置为243,这等于目标值,所以我们知道这是一个完美的幂。如果它达到

  • 这是我的代码:- 为什么程序不打印完美的数字? 我已经检查了很多次代码,但我找不到解决方案。请告诉我代码中出了什么问题。提前谢谢 任何帮助都将不胜感激。。。。

  • 好的,我目前正在一个网站上工作,对于网站的一部分,我试图显示一些来自SQL数据库的数据。我希望数据以如下所示的方式显示: 本质上,这应该显示一条记录,但是,我的问题是,我的样式表的设置方式是,每个项目列表/行只允许显示三个项目div。我不太明白怎么做,所以每个div只能显示3条记录,然后用PHP重置。

  • 问题内容: 我正在尝试创建两个线程,一个线程显示0到10的偶数整数,一个线程显示1到11的奇数整数。下面的代码是否适合设计该程序? 问题答案: 我只是更改一些细节(无需在此处使用模运算符…):