gpt4 book ai didi

java - 素数程序的意外输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:44 24 4
gpt4 key购买 nike

我有以下素数程序代码:

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。现在它打印:

2-100 之间的素数:
3个
5个
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com