我有一个primes程序的以下代码:

class Test2 {
    public static void main(String[] args) {
        System.out.println("Prime numbers inbetween 2-100: ");
        boolean isComposite = false;
        for (int i = 2; i <= 100; i++) {
            if ((i % 2) == 0) {
                continue;
            }

            for (int k = 3; k < i; k++) {
                if ((i % k) == 0) {
                    isComposite = true;
                    break;
                }
            }

            if (!isComposite) {
                System.out.println(i);
                isComposite = false;
            }
        }//End for
    }//End main()
}//End class

我的问题是,当我运行该代码时,会得到以下输出:
Prime numbers inbetween 2-100:
3
5
7

这么简单的代码,但我搞不懂是怎么回事任何帮助都将不胜感激。
另外,在java中寻找素数的最佳算法是什么?

最佳答案

您需要将循环中的标志isComposite重置为:

for (int i = 2; i <= 100; i++) {
            isComposite = false;
            if ((i % 2) == 0) {
                continue;
            }

            for (int k = 3; k < i; k++) {
                if ((i % k) == 0) {
                    isComposite = true;
                    break;
                }
            }

            if (!isComposite) {
                System.out.println(i);
                isComposite = false;
            }
        }

否则它将永远处于循环中现在它打印:
true

关于java - 素数程序的意外输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33207507/

10-09 01:13