#include<bits/stdc++.h>
using namespace std;
const int maxn=10001000;
int MAX;
int num[1000000];
int T,tot;
bool no[maxn];
int query[200010];
bool p(int x){
int a=0;
while(x){
a=x%10;
if(a==7) return 1;
x/=10;
}
return 0;
}
void sf(int x){
for(int i=1;i<=x;i++){
if(no[i]==1) continue;
if(!no[i]){
if(p(i)){
no[i]=1;
for(int j=i+i;j<=x;j+=i){
no[j]=1;
}
}
else num[++tot]=i;
}
}
}
int main(){
// freopen("number.in","r",stdin);
// freopen("number.out","w",stdout);
scanf("%d",&T);
//for(int i=1;i<=100;i++) cout<<num[i]<<"\n";
for(int i=1;i<=T;i++){
scanf("%d",&query[i]);
if(MAX<query[i]) MAX=query[i];
}
sf(MAX+500);
for(int i=1;i<=T;i++){
if(no[query[i]]) printf("-1\n");
else printf("%d\n",num[upper_bound(num+1,num+tot+1,query[i])-num]);
}
return 0;
}
这个程序在洛谷上AC , 399ms,14.61M
但是对以下问题输出错误
number.in
1
6999998
number.ans:
8000000
number.out:
0
请求加强数据
建议加入测试点: number.in:
200000
6999998
6999998
6999998
.
.
.
number.ans:
8000000
8000000
.
.
.