为什么我的程序找不到第10001个素数? [项目euler-problem7]

时间:2015-01-27 16:29:31

标签: java primes

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

2 个答案:

答案 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

            }