noi-8163-第n小的質數
阿新 • • 發佈:2018-12-31
第n小的質數
- 總時間限制:
- 1000ms
- 記憶體限制:
- 65536kB
- 描述
-
輸入一個正整數n,求第n小的質數。
- 輸入
- 一個不超過10000的正整數n。
- 輸出
- 第n小的質數。
- 樣例輸入
-
10
- 樣例輸出
-
29
- 基本版
//noi_8163 #include<iostream> using namespace std; int main(){ int n,a[105005]={0},b[10001]={0}; int x=1; // a[20]=1; cin>>n; for(int i=2;i<=105000;i++){ if(a[i]==1) continue; b[x]=i; x++; for(int r=2*i;r<=105000;r=r+i){ a[r]=1; } } // for(int i=1;i<=105005;i++){ // if(a[i]==0) { // b[x]=i; // x++; // } // } // freopen("t1.out","w",stdout); // for(int i=1;i<=sizeof(b)/sizeof(int);i++){ // cout<<i<<' '<<b[i]<<endl; // } cout<<b[n]; return 0; }
- 最終版(空間換時間,打表)
//noi_8163 #include<iostream> using namespace std; int main(){ int n,a[105005]={0},b[10001]={0}; int x=1; cin>>n; for(int i=2;i<=105000;i++){ if(a[i]==1) continue; b[x]=i; x++; for(int r=2*i;r<=105000;r=r+i){ a[r]=1; } } cout<<b[n]; return 0; }
- 究極版(時間,記憶體較上一版本減少)
#include<iostream> using namespace std; int main(){ int n,a[105005]={0},i,r; cin>>n; for(i=2;i<=105000;i++){ if(a[i]) continue; n--; if(n==0) break; for(r=2*i;r<=105000;r=r+i){ a[r]=1; } } cout<<i; return 0; }