这题,一开始以为是第几个素数,后来打表之后查了一下,发现不是。
再看看题目,才知道是简单的筛选法。
每一个筛选留下来的数n,n往后的所以数,能被n整除的除去,不能的留下,筛选出3000个数出来就OK了。
下面的是AC的代码:
#include <iostream>
#include <cstring>
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;
}