3个tle,还是不行a
大佬讲一下,谢谢
#include<iostream>
#include<cstdio>
using namespace std;
bool yam(int x)
{
while(x!=0)
{
if(x%10==7)
{
return 1;
}
x=x/10;
}
return 0;
}
int k[10000005];
int main()
{
k[1]=1;
k[2]=2;
k[3]=3;
k[4]=4;
k[5]=5;
k[6]=6;
int a,b[10000005];
scanf("%d",&a);
for(int i=0;i<a;i++)
{
scanf("%d",&b[i]);
}
for(int i=7;i<10000005;i+=1)
{
if(i%7==0)
i++;
if(yam(i)==0&&k[i]!=-1)
{
k[i]=i;
}
if(k[i]==0)
{
for(int j=1;j*i<10000005;j++)
{
k[j*i]=-1;
}
}
}
for(int i=0;i<a;i++){
if(k[b[i]]==0||k[b[i]]==-1)
printf("-1\n");
else if(yam(b[i])==0){
b[i]=b[i]+1;
for(;k[b[i]]!=b[i];b[i]++);
printf("%d\n",b[i]);
}
}
return 0;
}