我的问题是我的程序没有找到第10001个素数。所以它永远不会停止,我仍然不知道第10001个素数。我很乐意用我的实现解决问题。谢谢:))
public class problem7 {
public static boolean sonuc=true;
public static void asalmi(int j)
{
int counter=0;
int asayac=0;
for(int k=1;k<=j;k++)
{
if(j%k==0)
{
counter++;
}
}
if(counter==2)
{
// Only factors are 1 and j, so j is prime
System.out.println(j);
asayac++;
counter=0;
if(asayac==10001)
{
System.out.println(j);
sonuc=false;
}
}
}
public static void main(String[] args)
{
int i=1;
while(sonuc)
{
asalmi(i);
i++;
}
}
}
答案 0 :(得分:2)
每次调用asalmi时,都会将局部变量asayac设置为0.这应该是一个静态变量,而不是本地变量。
答案 1 :(得分:0)
c程序找到第10001个素数
#include<stdio.h>
isPrime(int x){
int i;
for(i=2;i<=x/2;i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
int n=3;
int counter=1;
while(counter!=10001){
if(isPrime(n)==1) counter++;
n=n+2; // possibility of next prime is by adding 2 to current
}
printf("counter=%d\n",counter);
printf("number is:%d\n",n-2); //-2 due to unwanted increment in loop
}