这个代码:
#include<bits/stdc++.h>
using namespace std;
int t,n;
int rrr=1,cnt;
bool isprime[3000010];
int s[3000001];
int ans[3000001];
int maxprime=2;
int main(){
ans[1]=1;
cin>>t;
for(int p=1;p<=t;p++){
cin>>n;
if(rrr>=n){
cout<<ans[n]<<endl;continue;
}
for(int i=2;i<=n;i++){
if(!isprime[i]){
maxprime=i;
cnt++;
s[cnt]=i;
}
for(int v=1;v<=cnt;v++){
if(i*s[v]>n)break;
isprime[i*s[v]]=1;
if(i%s[v]==0)break;
}
ans[i]=maxprime;
}
cout<<ans[n]<<endl;
rrr=n;
}
}
竟然 RE 掉 1 个点,可是数据也才 2×106 啊