复制偶数的素数

时间:2016-11-06 04:05:54

标签: java primes

这部分作业需要检查数组中的每个偶数,以获得加起来为偶数的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;
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

当你调用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;
            }
        }
    }