类似vijos1889。
#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define N 1000000
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
return x*f;
}
int tst,mu[N+10],prime[N+10],tot=0;
bool notprime[N+10];
void Mobius(){
notprime[1]=1;mu[1]=1;
for(int i=2;i<=N;++i){
if(!notprime[i]){
prime[++tot]=i;mu[i]=-1;
}for(int j=1;prime[j]*i<=N;++j){
notprime[prime[j]*i]=1;
if(i%prime[j]==0){
mu[i*prime[j]]=0;break;
}mu[i*prime[j]]=-mu[i];
}
}for(int i=1;i<=N;++i) mu[i]+=mu[i-1];
}
int F(int n){
int last=0,t=sqrt(n);ll res=0;
for(int i=2;i<=t;i=last+1){
last=sqrt(n/(n/(i*i)));
res+=(mu[last]-mu[i-1])*(n/(i*i));
}return -res;
}
int main(){
// freopen("a.in","r",stdin);
tst=read();Mobius();
while(tst--){
int k=read();int l=1,r=2e9;
while(l<=r){
int mid=(ll)l+r>>1;
if(mid-F(mid)>=k) r=mid-1;
else l=mid+1;
}printf("%d\n",r+1);
}
return 0;
}