N番目の素数を印刷する必要があります。 例:
第1の素数は2
第2の素数は3
です。
。スタックする2と3を追加)
1:
10日素数は29で、次のように....
N番目の素数を印刷するコード
私のアルゴリズムがあります。そうで
2)スタックのN <は=サイズであれば、位置にある項目を取得し、nおよび出力回答
3)、素数をチェックするために)
4素数かどうかを確認し、スタックの最後の要素から開始する、の各要素から分割スタック。スタック内の要素の残りの部分が0であれば、素数ではありません。プライム場合)ループ
5を破る、
6をスタックに追加します)奇数のみ
私のコードを検索することです:
#include <iostream>
using namespace std;
int main() {
int number, count = 0;
cin >> number; //position of prime number
int a[number];
a[0] = 2;
a[1] = 3;
int top = 1;
if (number <= 2) {
cout << a[number - 1] << endl;
} else {
for (int i = 5; i <= 10001; i += 2) {
for (int j = 0; j <= top; j++) {
if (i % a[j] != 0) {
count++;
}
if (count == (top + 1)) {
a[++top] = i;
if ((count + 1) == number) {
cout << a[top];
break;
}
}
}
}
}
return 0;
}
このコードは、突然どのoutput.Whatを与えることなく作業を停止しています私のコードに欠陥がありますか?
なぜあなたは常に2だけインクリメントされ、数字が奇数であることを保証していれば、配列の最初の数字で割りますか?そのチェックは不要です。 –
@ LuisColoradoプライムナンバーは常に奇数になるので...基本的に時間の複雑さを減らすため – user6889367
@LuisColoradoしかし、このコードはまだ大きな数字の時間がかかります。 – user6889367