【问题标题】:Duplicating prime numbers of even numbers复制偶数的质数
【发布时间】:2016-11-06 04:05:53
【问题描述】:

这部分作业需要检查数组中的每个偶数是否有 2 个素数加起来等于该偶数。我已经设法找到了 2 和每个偶数之间的所有素数,并将这些素数放在一个单独的数组列表中。我已经找到了如何找到每个偶数相加的 2 个素数;但是当我检查输出时,它给了我多个这样的答案:

    How many numbers would you like to compute: 
    12
    Your two prime factors that add up to 4 are: 
    2 & 2
    Your two prime factors that add up to 6 are: 
    3 & 3
    Your two prime factors that add up to 8 are: 
    3 & 5
    Your two prime factors that add up to 8 are: 
    5 & 3
    Your two prime factors that add up to 10 are: 
    3 & 7
    Your two prime factors that add up to 10 are: 
    5 & 5
    Your two prime factors that add up to 12 are: 
    5 & 7
    Your two prime factors that add up to 12 are: 
    7 & 5

我想要的只是一对素数,它们在循环中求和每个偶数。我的代码如下所示:

    //For Loop looks at every even number in the arrayList
    //for(int c = 0; c < len; c++) {

        //Code for Numbers that come before every even number
        //Code for Finding primes


        //Finding prime numbers that add up to even number
        int len3 = primeNumbers.size();
        for(int f = 0; f < len3; f++) {
            if(primeNumbers.get(f) + primeNumbers.get(f) == index) {
                System.out.println("Your two prime factors that add up to " + index + " are: ");
                System.out.println(primeNumbers.get(f) + " & " + primeNumbers.get(f));
                break;
            }   


            for(int g = 1; g < len3; g++) {
                if(primeNumbers.get(f) + primeNumbers.get(g) == index) {
                    System.out.println("Your two prime factors that add up to " + index + " are: ");
                    System.out.println(primeNumbers.get(f) + " & " + primeNumbers.get(g));
                    break;
                }
            }
        }
    }

【问题讨论】:

    标签: java primes


    【解决方案1】:

    试试这个。你的第二个循环应该从 f 开始。所以如果你这样做,你可以删除第一个,如果你有,然后有这个。我还没有测试过。但试着让我知道它是否有效。

    for(int f = 0; f < len3; f++) {
        for(int g = f; g < len3; g++) {
            if(primeNumbers.get(f) + primeNumbers.get(g) == index) {
                System.out.println("Your two prime factors that add up to " + index + " are: ");
                System.out.println(primeNumbers.get(f) + " & " + primeNumbers.get(g));
            }
        }
    }
    

    【讨论】:

    • 感谢您的意见。我设法更改了您的编辑,因此它也可以查看相同的素数,这些素数可以像我以前的代码一样加起来为偶数,除了我像您一样将辅助循环放在主 F 循环下。然后我将主循环“标记”为“外循环:”我想突破,因为我想通了。索引不能重复。无论如何,非常感谢您的帮助!
    • 如果您可以将此标记为您的答案,那就太好了。谢谢
    【解决方案2】:

    当你调用 break 语句时,如果你的方法只处理这个逻辑,它只会中断当前循环,只需将 break 语句更改为返回。希望这是你所期望的:

        int len3 = primeNumbers.size();
        for (int f = 0; f < len3; f++) {
            if (primeNumbers.get(f) + primeNumbers.get(f) == index) {
                System.out.println("Your two prime factors that add up to " + index + " are: ");
                System.out.println(primeNumbers.get(f) + " & " + primeNumbers.get(f));
                return;
            }
            for (int g = 1; g < len3; g++) {
                if (primeNumbers.get(f) + primeNumbers.get(g) == index) {
                    System.out.println("Your two prime factors that add up to " + index + " are: ");
                    System.out.println(primeNumbers.get(f) + " & " + primeNumbers.get(g));
                    return;
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2014-04-12
      • 2021-05-20
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      相关资源
      最近更新 更多