首相の距離

タイトル説明

数論と呼ばれる数学の枝は、数字の性質についてです。何千年もの数の理論家の関心を獲得している分野の一つは、素数の問題です。素数には、適切な因子(それだけで割り切れる1自体によるものである)を有していない数です。最初の素数は2,3,5,7-ですが、彼らはすぐにあまり頻繁になります。興味深い問題の一つは、彼らが様々な範囲にあるか密です。隣接する素数は、両方の素数ある二つの数字ですが、隣接する素数の間には、他の素数はありません。例えば、2,3は、隣接する数字だけ隣接素数です。 
すなわち(LとU(1 <= L <U <= 2147483647)、あなたが最も近い2つの隣接する素数C1とC2(L <= C1 <C2 <= U)を見つけるためにある:あなたのプログラムは、2つの数字を与えていますC2-C1)が最小となります。離れて同じ距離にある他の対が存在する場合、最初のペアを使用します。もしD1およびD2は、可能な限り互いにとして離れているD1及びD2(L <= D1 <D2 <= U)は(タイが存在する場合、再び最初のペアを選択すること)は、2つの隣接する素数を見つけることもあります。

エントリー

入力の各ラインは、LとUの間の差が1,000,000を超えないU. <Lで、2つの正の整数であり、LおよびUを含有するであろう。

輸出

各LとUのために、出力は、いずれかまたは隣接素数の二組を与える行(2つ未満の二つの与えられた数の間の素数があるので)が隣接素数が存在しないことを声明であろう。

サンプル入力

2 17 
14 17

サンプル出力

2,3 7,11が最も離れている、最も近いです。
隣接する素数はありません。

  

#include <ビット/ STDC ++ H> 

名前空間STDを使用して、
typedefの長い長いLL。
const int型MAXN = 500010; 
int型VIS [1000100]、プライム[MAXN]、TOT、[MAXN]、NUM、MINP、をmaxP。
空get_prime(){ 
    のために(int型I = 2; I <= 50000;私は++){ 
        場合(VIS [i]が!){ 
            プライム[++ TOT] = I; 
        } 
        のための(int型J = 0; J <TOT && 1LL iが素数[j]を* <= 50000; J ++){ 
            VIS [i *が素数[J] = 1。
            IF(I%プライム[j] == 0){ 
                破ります。
            } 
        } 
    } 
} 
int型のmain(){ 
    int型のL、R。
    get_prime(); 
    一方、(〜のscanf( "%d個の%のD"、&L&R)){
        memsetの(VIS、0、はsizeof(VIS))。
        以下のために(INT i = 0; iはTOT <; iは++){ 
            int型P =プライム[I]。
            { - (; J <= R J + = P 1)/ P * Pの)のLL J = MAX(P *は2LL、(1LL *のL + P)用
                VIS [J - L] = 1。
            } 
        } 
        NUM = 0。
        以下のために(INT i = 0; I <= R - L; iは++){ 
            IF(!VIS [I] && iはL +> 1){ 
                [NUM ++] = iが+ L。
            } 
        } 
        もし(NUM <2){ 
            のprintf( "なし隣接素数はありません\ n"); 
            持続する; 
        } 
        MINP = 0。
        maxP = 0; 
        以下のために(INT i = 0; I + 1 <NUM; iは++){
            INT D = [I + 1] -a [I]。
            IF(D <MINP + 1] - [MINP])MINP = I。
            IF(D>をmaxP + 1] - [をmaxP])をmaxP = I。
        } 
        のprintf( "%のD、%dは、%のD、%dは最も遠い最も近接している\ n"、[MINP]、[MINP + 1]、[をmaxP]、[をmaxP + 1])。
    } 
}

  

おすすめ

転載: www.cnblogs.com/Accpted/p/11334350.html
おすすめ