求讲解555555555555
#include<iostream>
#include<cstdio>
using namespace std;
int num[10000100],n;
int t,x[200010],maxn;
int f[10000100];
bool cmp(int x){
while(x!=0){
if(x%10==7)return 1;
x/=10;
}
return 0;
}
int main(){
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
cin>>t;
for(int i=1;i<=t;i++){
cin>>x[i];
maxn=max(maxn,x[i]);
}
if(maxn<=100)n=1000;
else if(maxn<=1000)n=10000;
else if(maxn<=10000)n=20000;
else if(maxn<=2*10e5)n=4*10e5;
else n=10000010;
for(int i=1;i<=n;i++){
if(f[i]!=0)continue;
if(i%7==0||cmp(i)!=0){
//cout<<i<<':';
for(int j=1;j*i<=n&&f[j]!=-1;j++){
f[j*i]=-1;
//cout<<j*i<<' ';
num[i*j]=-1;
}
//cout<<endl;
}
else {
f[i]=1;
}
}int l=1;
for(int i=2;i<=n;i++){
if(num[i]!=-1){
num[l]=i;
l=i;
}
}
for(int i=1;i<=t;i++){
cout<<num[x[i]]<<endl;
}
fclose(stdin);
fclose(stdout);
return 0;
}