zoukankan      html  css  js  c++  java
  • 题解:UVA10140 Prime Distance

    数据范围太大

    于是采用一个类似于离散化的操作

    首先需要明确一个定理

    如果n是一个合数, 那么n一定有一个不超过根号n的指数因子

    于是我们先筛1~100000的素数

    然后暴力扫一遍将L~R内的素数映射到一个数组里

    暴力枚举最大最小即可

    qwq注意输出换行,并且开long long,一般情况开long long总不会亏

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 const int N=100010; 
     5 const int X=2147483647;
     6 typedef long long ll; 
     7 using namespace std;
     8 bool vis[N*10];
     9 ll prime[N], k=0;
    10 ll prime2[N*10], top=0;
    11 void shai(){
    12     memset(vis,false,sizeof(vis));
    13     k=0;
    14     for(ll i=2; i<N; ++i){
    15         if(!vis[i])
    16             prime[++k]=i;
    17         for(int j=i*2; j<N; j+=i)
    18             vis[j]=true;
    19     }
    20 }
    21 int main(){
    22     shai();
    23     ll L, R;
    24     while(scanf("%lld%lld", &L, &R)!=EOF){
    25         L=max(L, 2ll);
    26         top=0;
    27         memset(vis, 0, sizeof(vis));
    28         for(ll i=1; prime[i]*prime[i]<=R && i<=k; ++i){
    29             int s=L/prime[i]+(L%prime[i]>0);
    30             if(s==1)    s=2;
    31             for(ll j=prime[i]*s; j<=R; j+=prime[i])
    32                 vis[j-L]=true;
    33         }
    34         for(ll i=0; i<=R-L; ++i)
    35             if(!vis[i])    prime2[++top]=i+L;
    36         ll minn=X, a=0;
    37         ll maxn=0, b=0;
    38         for(ll i=1; i<top; ++i){
    39             if(prime2[i+1]-prime2[i]<minn){
    40                 minn=prime2[i+1]-prime2[i];
    41                 a=i;
    42             }
    43             if(prime2[i+1]-prime2[i]>maxn){
    44                 maxn=prime2[i+1]-prime2[i];
    45                 b=i;
    46             }
    47         }
    48         if(top<2)
    49             printf("There are no adjacent primes.
    ");
    50         else
    51             printf("%lld,%lld are closest, %lld,%lld are most distant.
    ", prime2[a], prime2[a + 1], prime2[b], prime2[b + 1]);
    52     }
    53     return 0;
    54 } 
  • 相关阅读:
    在注册表中添加windows鼠标右键菜单
    关于MVC中无法将类型为“System.Int32”的对象强制转换为类型“System.String”的问题。
    dns
    ntp
    研究比对搞定博客 canvas-nest.js
    linux 添加ssh和开启ssh服务apt管理的ubuntu
    xshll 连接ubuntu出现 ssh服务器拒绝了密码
    yum和rpm
    服务器无法远程连接原因分析
    关于服务器卡顿的几个原因
  • 原文地址:https://www.cnblogs.com/Aze-qwq/p/9871035.html
Copyright © 2011-2022 走看看