请问如何处理10000000后的数据呢?
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 10050000
using namespace std;
bool a[N] = {};
bool isReal(int n){
if(n % 7 == 0) return false;
while(n != 0){
if(n % 10 == 7) return false;
n /= 10;
}
return true;
}
void init(){
memset(a,1,sizeof(a));
for(int i = 7;i < N - 1;i++){
if(!isReal(i)){
for(int j = 1;j < N / i;j++){
a[i * j] = 0;
}
}
}
}
int find(int n){
for(int i = n + 1;i < N;i++){
if(a[i] != 0) return i;
}
}
int main(){
init();
int t;
cin >> t;
for(int i = 0;i < t;i++){
int x;
cin >> x;
if(a[x] == 0) cout << -1 << endl;
else cout << find(x) << endl;
}
return 0;
}
已经试过将数组调大了,TLE