這題,一開始以為是第幾個素數,後來打表之後查了一下,發現不是。
再看看題目,才知道是簡單的篩選法。
每一個篩選留下來的數n,n往後的所以數,能被n整除的除去,不能的留下,篩選出3000個數出來就OK了。
下面的是AC的代碼:
#include#include using namespace std; int num[50000]; int a[3005]; int main() { memset(num, 0, sizeof(num)); int c = 0, k; for(int i = 2; i < 50000; i++) { if(!num[i]) { a[c++] = i; k = 0; for(int j = i + 1; j < 50000; j++) { if(!num[j]) { k++; if(k == i) { num[j] = 1; k = 0; } } } if(c >= 3000) break; } } int n; while(cin >> n, n) cout << a[n - 1] << endl; return 0; }