안녕하세요. 오늘은 슈퍼 소수를 찾아볼 거예요.
https://www.acmicpc.net/problem/31216
k번째 슈퍼소수는 k번째 소수번째 소수입니다.
에라토스테네스의 체를 이용해서 소수를 많이 저장해둔 다음에 쓰면 됩니다.
#include <iostream>
#include <vector>
#define ll long long
using namespace std;
bool ck[1010101] = { 0 };
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll i, j;
vector <ll> v; v.push_back(1);
for (i = 2; i <= 1000000; i++)
{
if (ck[i] == false) v.push_back(i);
for (j = i; j <= 1000000; j += i) ck[j] = true;
}
ll T, N;
cin >> T;
while (cin >> N)
cout << v[v[N]] << "\n";
}
감사합니다.