这是怎么回事???
查看原帖
这是怎么回事???
539495
what_else楼主2022/5/3 20:48

这个代码:

#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]){
				//cout<<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;
    }
}

竟然 RERE11 个点,可是数据也才 2×1062×10^6

2022/5/3 20:48
加载中...