素数不适用于某些值

时间:2017-07-10 22:18:08

标签: java windows

任务是找到给定数字的素数。这是代码

import java.util.ArrayList;

public class Queue {
    private static int number = 0;
    private static int prime;

    public static void calculatePrime(int p) {
        while (prime <p) {
            if (number % 2 != 0) 
                number++;
                prime++;

            {
                number++;

            }

        }
        System.out.println(number );
    }

    public static void main(String args[]) {

        calculatePrime(10001);

    }

}

当输入值为3时,它会打印出正确的值5,但是当输入值为10001时,它会打印出104743以外的数字

1 个答案:

答案 0 :(得分:1)

这是编译器看到的calculatePrime方法:

public static void calculatePrime(int p) {

    while (prime <p) {

        if (number % 2 != 0) 
            number++;

        prime++;
        number++;

    }

    System.out.println(number );
}

您可以使用以下内容:

public static void calculatePrime(int p) {
    int primeCandidate = p;

    while (!isPrime(primeCandidate)) {
        primeCandidate++;
    }

    System.out.println(number );
}

如果候选人是素数,你需要一个方法来返回true。有很多这些可用于谷歌搜索的小价格。

相关问题