复制偶数的素数

Duplicating prime numbers of even numbers

作业的这一部分需要检查数组中的每个偶数是否有 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;
                }
            }
        }
    }

试试这个。你的第二个循环应该从 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));
        }
    }
}

当您调用 break 语句时,如果您的方法仅处理此逻辑,则它会简单地中断当前循环,只需将 break 语句更改为 return。希望这是你所期待的:

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