怎么说我的第一个测试点也能过吧?
#include <bits/stdc++.h>
#define ll long long
using namespace std;
// YN-0077
ll read(){
char c = getchar();
while (!(c >= '0' && c <= '9')) c = getchar();
ll ret = 0;
while (c >= '0' && c <= '9'){
ret = ret * 10 + (c - '0');
c = getchar();
}
return ret;
}
bool f[10000010];
ll nxt[10000010];
bool check(ll n){
ll num1 = n;
while (num1){
if (num1 % 10 == 7) return false;
num1 /= 10;
}
return true;
}
int main(){
//freopen("number.in", "r", stdin);
//freopen("number.out", "w", stdout);
for (ll i = 0; i <= 10000000; i++){
f[i] = 1;
}
ll tot = 0;
nxt[0] = 1;
for (ll i = 1; i <= 10000000; i++){
if (!f[i]) continue;
if (check(i)){
nxt[tot] = i;
tot = i;
}else{
for (ll j = i + i; j <= 10000000; j += i){
f[j] = 0;
}
}
}
ll T;
T = read();
while (T--){
ll n;
n = read();
if (!f[n]){
printf("-1\n");
continue;
}
printf("%lld\n", nxt[n]);
}
return 0;
}