zoukankan      html  css  js  c++  java
  • UVA10140 Prime Distance【素数/数论】By cellur925

    题目传送门

    我们注意到,L,R是肥肠大的.........我们不可能在1s内筛出2^31内的全部质数。

    “上帝为你关上一扇门,同时为你打开一扇窗”

    我们又注意到,R-L是肥肠比较小的,珂以从这入手解决问题。

    我们知道,任意一个合数x一定包含不超过sqrt(n)的质因子。

    所以我们就筛出2~sqrt(R)之间的所有素数,用他们来标记全部范围内的合数。最后没被标记的数就是质数,比较相邻的质数位置取最大。

    Code

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<algorithm>
     4 #include<iostream>
     5 #include<cstring>
     6 
     7 using namespace std;
     8 
     9 int zz,xx,gg,bb,tot,l,r,cnt,minn,maxx;
    10 bool v[1000100];
    11 int pri[100000],b[1000100];
    12 
    13 
    14 bool prime(int q)
    15 {
    16     if(q==2||q==3) return 1;
    17     if(q==1) return 0;
    18     if(q%6!=1&&q%6!=5) return 0;
    19     int Vergil=sqrt(q);
    20     for(int i=5;i<=Vergil;i+=6)
    21      if(q%i==0||q%(i+2)==0) return 0;
    22     return 1; 
    23 }
    24 
    25 void pre()
    26 {
    27     for(int i=1;i<=46340;i++)
    28      if(prime(i)) pri[++tot]=i;
    29 }
    30 
    31 int main()
    32 {
    33     pre();
    34     while(cin>>l>>r)
    35     {
    36         memset(v,1,sizeof(v));cnt=0;
    37         if(l==1) v[0]=0;
    38         for(int i=1;i<=tot;i++)
    39          for(int j=l/pri[i];j<=r/pri[i];j++)
    40         if(j>1) v[j*pri[i]-l]=0;//"-l"是在节省空间 
    41         for(int i=l;i<=r;i++)
    42         {
    43             if(v[i-l]) b[++cnt]=i;
    44             if(i==r) break;
    45         }
    46 
    47         minn=2147483647,maxx=0;
    48         for(int i=1;i<=cnt-1;i++)
    49         {
    50             int tmp=b[i+1]-b[i];
    51             if(tmp<minn) zz=b[i],xx=b[i+1],minn=tmp;
    52             if(tmp>maxx) gg=b[i],bb=b[i+1],maxx=tmp;
    53         }
    54         if(!maxx)
    55          printf("There are no adjacent primes.
    ");
    56         else printf("%d,%d are closest, %d,%d are most distant.
    ",zz,xx,gg,bb); 
    57     }
    58     return 0;
    59 } 
    View Code
  • 相关阅读:
    Android Studio AVD和SDK Manager灰色不能点击的问题。
    回溯:最佳调度问题
    回溯:八皇后问题(蒟蒻)
    usaco1.4.3等差数列
    单调队列练习题(oj p1157 p1158 p1159)
    OJP1147括号匹配加强版(栈)与P1153乱头发节(单调栈)
    NOIP2017游记......
    火柴棒等式c++
    潜伏者(noip09年t1)解题报告 C++
    2016noipday1t1玩具迷题结题报告
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9711274.html
Copyright © 2011-2022 走看看