gpt4 book ai didi

java - 埃拉托色尼筛素数程序

转载 作者:行者123 更新时间:2023-12-01 12:17:35 24 4
gpt4 key购买 nike

我的实验室被要求编写一个程序,使用埃拉托斯特尼筛法打印 100 以下的素数。然而,我已经编写了程序,并打印出了一些非素数,例如 27,33 和 99。抱歉,解释不好,但这是我的代码,我希望有人可以提供一些建议或解决方案。谢谢!

public class SOE {
public static void main(String args[]) {
boolean [] myArray = new boolean[100];
int j=0;

for(int i=0;i<myArray.length;i++) { //Initialises array
myArray[i] = false;
}

for(int i=2;i<myArray.length;i++) { //loops through slot numbers
while(j<myArray.length) { //loops through multiples
if(j%i == 0 || j%5==0) {
myArray[j] = true;
}
j++;
}
}

for(int i=0;i<myArray.length;i++) { //prints out prime numbers
if(myArray[i]==false) {
System.out.println(i);
}
}
}
}

最佳答案

埃拉托斯特尼筛法通常要简单得多:

for(int i = 2; i < myArray.length; i++) {
if (myArray[i]) {continue;}
j = 2 * i;
while(j < myArray.length) {
myArray[j] = true;
j += i;
}
}

这将按顺序消除 4, 6, 8, ...,然后 6, 9, ...,然后跳过 4 >,然后 10,...,然后跳过 6... 依此类推

关于java - 埃拉托色尼筛素数程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26896630/

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