#include<bits/stdc++.h>
using namespace std;
int a[10000001],b[10000001],m,cnt=0;
int cmp(int num){
while(num){
if(num%10==7)return 1;
num/=10;
}return 0;
}
void f(){
for(int i=1;i<=10000000;i++){
if(!b[i]){
if(cmp(i)){
b[i]=1;
for(int j=2;j*i<=10000000;j++){
b[j*i]=1;
}
}else{
a[++cnt]=i;
}
}
}
}
int find(int num){
int l=1,r=cnt,mid;
while(l<r){
mid=(l+r)>>1;
if(a[mid]==num)return mid;
else if(a[mid]<num)l=mid+1;
else r=mid;
}return l;
}
int main(){
f();
int n;cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&m);
if(b[m]==1){
printf("-1\n");continue;
}
printf("%d\n",a[find(m+1)]);
}
return 0;
}
为什么wa了?