题意:
给定p和y,把[2,p]中每个数都标记,问[p+1,y]中未被标记的最大值
无解则输出-1
数据范围:p,y<=1e9
解法:
显然最大值的质因子都不在[2,p]中,那么用质因子check某个值是否被标记
但是数据范围很大,有1e9,看起来无法全部枚举
但实际上有个结论:
<=1e9的两个质数之间的差不超过300,所以从y倒着暴力枚举即可
code:
#include<bits/stdc++.h>
using namespace std;
signed main(){
int p,y;cin>>p>>y;
for(int i=y;i>p;i--){
int ok=1;
for(int j=2;j*j<=i;j++){//枚举因子
if(i%j==0){
if(j<=p){//如果因子<=p则不行
ok=0;break;
}
}
}
if(ok){
cout<<i<<endl;
return 0;
}
}
cout<<-1<<endl;
return 0;
}