-1

素数の配列を生成するコード

私はコードをC言語で書いたので、コードが素数を生成するまで10^9

long primes[100000];
long number;
void prime_array_generator(long max){
    long sqrprime=9;
    long y=4,p=2;

    long testnumber=4,k,l=2;
    int j=0; 
    long n=1;   
    while(1){
        if(sqrprime>max){
            sqrprime = max;
        }
        for(;testnumber<=sqrprime;testnumber++){
            for(k=0;k<l;k++){
                if(testnumber%p==0){
                    j=1;
                    break;
                }
                p = primes[k+1];
            }       
            if(j==1){
                j=0;
                p=2;
                continue;
            }
            else{
                primes[number]=testnumber;
                number++;
                p=2;
            } 
        }
        if(sqrprime<max){
            n++;
            l=n;    
            sqrprime = primes[n]*primes[n];
            }
        if(sqrprime== max)
            break;
    }
}


 main(){
       //im using the prime_array_generator here 
    }

max = 10^6その後動作しないまで結果を表示するプログラム

4

1 に答える 1

4

あなたの素数配列

long primes[100000];

1299709 までの素数のためのスペースしかありません。その後、配列の境界の外に書き込んでいます。

10^9 未満の素数は 50847534 個あります。

余談: あなたのアルゴリズムは効率的ではありません。10^9 のターゲット境界の場合は、必ずふるいを使用する必要があります。

シンプルで効率的なエラトステネスのふるい

于 2012-12-02T02:47:24.087 に答える