公司网站建设宣传公司,做网站是干嘛,百度网页下载,广州网站提升排名正题
题目链接:http://poj.org/problem?id2689 题目大意
求闭区间[L,R][L,R]中相邻的最远和最近的两个质数。 解题思路
我们可以用前R−−√个质因子筛这个区间内的质数R个质因子筛这个区间内的质数解题思路
#includecstdio
#includealgorithm
#include2689 题目大意
求闭区间[L,R][L,R][L,R]中相邻的最远和最近的两个质数。 解题思路
我们可以用前R−−√个质因子筛这个区间内的质数R个质因子筛这个区间内的质数\sqrt R个质因子筛这个区间内的质数 解题思路
#includecstdio
#includealgorithm
#includecstring
#includecmath
#define N 1000010
using namespace std;
int l,r,ok[N],uok[N],prime[N],tot,pre,mark1,mark2,makr1,makr2,i;
int main()
{while(scanf(%d%d,l,r)2){int tsqrt(r);tot0;for(i2;it;i)//筛前根号R个{if(!ok[i]){prime[tot]i;for(int j2*i;jt;ji)ok[j]true;}}memset(uok,0,sizeof(uok));for(i1;itot;i)//筛这个范围内的{int aprime[i],Ll/a,Rr/a;if(l%a) L;for(int jL;jR;j)if(a*j!prime[i])uok[a*j-l]true;}if(l1)uok[0]1;for(i0;ir-luok[i];i);prei;makr1-2147483647/3;makr22147483647/3;mark10;mark20;bool flagfalse;for(i;ir-l;i)//寻找最近和最远{if(!uok[i]){ if(mark2-mark1i-pre){mark2il;mark1prel;}if(makr2-makr1i-pre){makr2il;makr1prel;}flagtrue;prei;}}if(flag)printf(%d,%d are closest, %d,%d are most distant.\n,makr1,makr2,mark1,mark2);elseprintf(There are no adjacent primes.\n);}
}