只是了解下这种简单的数论定义,解释可以戳这个
http://www.cnblogs.com/Findxiaoxun/p/3460450.html
,然后按Ctrl+ F搜索 反素数 ,找到那一部分看一看就行。
#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; //const int MAXN=500000+5; ; bool prime[MAXN]; int ans[MAXN]; int n; void predeal(){ prime[]=prime[]=false; ;i<MAXN-;i++) ==)prime[i]=;//not prime ; prime[]=true; ;i<sqrt(MAXN-);i++){ if(prime[i]) ;j+=i)prime[j]=false; } } void emirp(){ ans[]=; ;i<MAXN-;i++){ ans[i]=; ,j=i; ){ while(!prime[pj])pj++; ; && j>){num++;j/=pj;} pj++; ans[i]*=num+; } } } int judge(int left,int right){ ,maxid=-; for(int i=left;i<=right;i++){ if(ans[i]>maxvalue){ maxvalue=ans[i]; maxid=i; } } return maxid; } int main(){ int a,b; predeal(); emirp(); scanf("%d",&n); while(n--){ scanf("%d%d",&a,&b); printf("%d\n",judge(a,b)); } ; }