[C++] プロジェクトオイラー Problem7

C++

素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり, 6番目の素数は 13 である.

10 001 番目の素数を求めよ.

ソースコード紹介

#include <iostream>
#include <cmath>
using namespace std;
int main() {
  int i = 5;
  int cnt = 2;
  
  while(1) {
    int flag = 0;
    for(int j = 2; j < (int)sqrt(i) + 1; j++) {
      //cout << i << " " << j << endl;
      if(i % j == 0)
        flag = 1;
    }
    if(flag == 0)
      cnt++;

    if(cnt == 10001) {
      cout << i << endl;
      break;
    }
    i+=2;

  }


}


/* 実行結果


104743


*/

偶数は素数ではないのでi+=2にして計算量を半分に抑えました。

現在パソコンが故障して大変ですが、なんとか頑張って投稿頑張っていこうとおもいます。

今回は以上になります。

ではまた。

コメント

タイトルとURLをコピーしました