zoukankan      html  css  js  c++  java
  • comet_c1360

    这道题目提示了波兰特-切比雪夫定理,然后可以知道

    在[n,2n]之间必然存在一个素数。

    而题目给的n,k;

    即从k+1开始,传向[2,n+1];

    那么必然存在一个素数p 在 [(n+1)/2,n+1]之间,只要传到这个p,下一步即可覆盖整个区间.

    随后的步骤就可以确定了,就是判断k+1是[n+1/2+1,n+1]的素数.

    代码如下:

    #include<iostream>
    #include<queue>
    #include<string>
    #include<cstring>
    #include<map>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    bool isprime(long long x){
        if(x<=3)
            return x>1;
        if(x%6!=1&&x%6!=5)
            return false;
        long long k=sqrt(x);
        for(int i=5;i<=k;i+=6){
            if(x%i==0||x%(i+2)==0)
                return false;
        }
        return true;
    }
    int main(){
        long long n,k;
        cin>>n>>k;
        if(2*k+2<=n+1){
            cout<<2<<endl;
        }
        else{
            if(isprime(k+1))
                cout<<1<<endl;
            else
                cout<<2<<endl;
        }
        return 0;
    }
  • 相关阅读:
    组件之间通信(父传子)
    flex布局
    ffmpeg解析TS流(转)
    swift之?和!的含义(转)
    Swift之画圆角添加多个枚举值方法
    swift之singleton
    swift之闭包
    Swift之fallthrough
    Selector
    Settings Bundle
  • 原文地址:https://www.cnblogs.com/Ean1zhi/p/12189127.html
Copyright © 2011-2022 走看看