为什么我的程序找不到第 10001 个素数? [项目欧拉问题7]

Why doesn't my program find the 10001st prime? [Project euler-problem7]

我的问题是我的程序找不到第 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++;
        }
    }
}

每次调用asalmi,都会设置一个局部变量asayac为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

            }