0

素数を見つけるために多少最適化されたアルゴリズムを使用して、プロジェクト オイラーの 10 番目の質問を解決しようとしました

#include<stdio.h>
#include<math.h>

long long int main() {
    int flag =1;
    long int lim = 199999; //upto which the prime is to be generated
    long int purposedPrime = 2;
    long int PrimeSet[200000] = {0}, count=0; 
    long int i;
    float sRoot_PP;
    long long int Sum = 0 ; //This is for prj_euler :)
    PrimeSet[count] = 2; count++; purposedPrime++;
    PrimeSet[count] = purposedPrime ; count++;
    Sum = 5 ;
    while(purposedPrime < lim){
        flag = 1;
        purposedPrime += 2;
        sRoot_PP = sqrt(purposedPrime);
        for(i=0; i<count; i++){
            if(PrimeSet[i]>sRoot_PP) break;
            if(purposedPrime % PrimeSet[i] == 0){ flag = 0; break;}
        }
        if(flag == 1){
            PrimeSet[count] = purposedPrime ;
            count++;
            Sum += purposedPrime;
        }
    }

    printf("Total Count: %d", count);

    printf("\n");
    printf("Sum : %ld", Sum);
    return Sum;
}

ローカル マシンで実行しました: Codeblocks with MinGW in Win8. 出力

Total Count: 17984
Sum : 1709600813
Process returned 7096800813 (0x65E6702D) execution time : 0.063 s
Press any key to continue

codepadで実行しました。出力

Total Count: 17984
Sum : 1709600813
Exited: ExitFailure 45

どちらの場合も、出力は正しくありません。個人的には、表示されたエラーで何かをしなければならないと思います。エラーは何を指していますか?

4

1 に答える 1

1

エラーは、メイン関数からゼロ以外の値を返すことを示しています。そのエラーを修正するには、 に置き換えるだけreturn Sumですreturn 0。ただし、結果には役立ちません。同様に、 の戻り値mainを単に beintに変更しますが、実際には違いはありません。

于 2013-05-19T17:02:18.803 に答える