感觉没什么问题 刚刚看讨论区有 一个说倍数那里a[]会溢出,不懂怎么改,还是什么别的问题
#include<bits/stdc++.h>
#define Maxn 10001000
using namespace std;
int T, a[Maxn], nex[Maxn],now=1;
int ssss()
{
for(int i = 7;i <= Maxn; i++)
{
if(a[i])
continue;
else
{
bool bo1 = 0;
int i0 = i;
while(i0)
{
if(i0%10 == 7)
{
bo1 = 1;
break;
}
i0 /= 10;
}
if(bo1 == 1)
{
for(int j = 2*i; j <= Maxn; j += i)
{
if(j>Maxn)break;
a[j] = 1;
}
}
}
}
}
int main()
{
ssss();
for(int i=2;i<=Maxn;i++)
{
if(a[i])
{
nex[i]=-1;
continue;
}
nex[now]=i;
now=i;
}
cin>>T;
int x;
for(int i=1;i<=T;i++)
{
cin>>x;
cout<<nex[x];
}
return 0;
}