gpt4 book ai didi

java - Eratosthenes 故障筛

转载 作者:行者123 更新时间:2023-11-29 08:07:36 25 4
gpt4 key购买 nike

我正在尝试用 Java 创建埃拉托色尼筛法,但我编写的代码似乎有缺陷。我想知道是否有其他人能发现我的错误,因为我不能。我得到的输出只是 [2],这意味着我的主循环不起作用。我才刚刚接触 Java,所以如果您能给出详细的答案,我将不胜感激。

我的代码:

public static int[] primes(int n)
{
//Variable assignement
double sqrt;
List<Integer> primes= new ArrayList<Integer>();
//Adds 2 to primes so i don't need to include the even numbers in my for loop.
if(n>1)
{
primes.add(2);
}
//For loop that goes through the oneven numbers up to n
for(int counter1=3;counter1<=n;counter1+=2)
{
sqrt=Math.floor(Math.sqrt(0.0+counter1));
//for loop that tests if the first for loops number is prime
for(int counter2=0;sqrt<=primes.get(counter2);counter2++)
{
if(counter1 % primes.get(counter2) != 0 && counter2 ==sqrt)
{
primes.add(counter1);
}

if(counter1 % primes.get(counter2)==0)
{
break;
}
}
}
return convertIntegers(primes);
}
//Converts the list to an array
public static int[] convertIntegers(List<Integer> integers)
{
int[] ret = new int[integers.size()];
for (int i=0; i < ret.length; i++)
{
ret[i] = integers.get(i).intValue();
}
return ret;
}

最佳答案

if(counter1 % primes.get(counter2)==0);{
break;}
}

不太可能帮助解决问题。您在左大括号之前有一个分号 - 您的 break 将始终执行。

关于java - Eratosthenes 故障筛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088871/

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