计算第10001个素数

erf*_*ban -5 java

我想计算问题7欧拉项目中的第10001个素数.这就是我所做的:

int i=0;
int counter=2;
while (i<=10001){
    counter++;
    if (Helper.isPrime(counter))
        i++;
}
Helper.println(counter);
Run Code Online (Sandbox Code Playgroud)

它正在返回,104033但正确的答案是104743.我的问题在哪里?

Ted*_*opp 8

您的代码有三个问题:

  1. 您的代码不会测试2是否为素数,因此您的计数中缺少该值.您应该初始化counter为0或1,而不是2.
  2. 通过使用while (i<=10001),您可以计算直到找到10002个素数.因为你也不算2,所以你需要走两步.循环测试应该是while (i<10001).
  3. 由于你的答案低于正确的答案(即使你的循环已经超过应该停止的两个素数),你的Helper.isPrime方法显然将太多的数字识别为素数.它需要修复,但由于你还没有发布它的代码,所以无法说明修复它需要什么.