这个代码写了好久然后交上去后三个点TLE
可恶啊我的青春
#include<bits/stdc++.h>
using namespace std;
int t,x,b[200005],p[10000005],n[10000005];
bool a[10000005];
bool has(int x) {
while(x!=0) {
if(x%10==7) {
return true;
}
x/=10;
}
return false;
}
int main() {
int i,j;
for(i=1;i<=10000000;i++){
p[i]=i-1;
n[i]=i+1;
}
for(i=1;i<=10000000;i++){
if(a[i])continue;
if(has(i)){
for(int j=i;j<=10000000;j+=i){
if(a[j])continue;
n[p[j]]=n[j];
p[n[j]]=p[j];
a[j]=true;
}
}
}
cin>>t;
for(i=1; i<=t; i++) {
cin>>x;
if(a[x]) cout<<-1<<endl;
else {
int awa=x+1;
while(awa) {
if(!a[awa]) {
cout<<awa<<endl;
break;
}
awa++;
}
}
}
return 0;
}
蒟蒻求助 求教除了这个的非暴力解法或者预处理方法 感谢(拜)