双子素数
(; P + 2 p)の双子素数の形式の素数の対です。ポールによって鋳造された用語\ツインプライム」
Stckel(1892から1919)。RST数双子素数である(3,5)、(5,7)、(11,13)、(17,19)、(29、 31)、(41、43)。
この問題は、あなたがSがされる整数であるS番目のツインプライム対にNDうち求められ
た入力に与えられる。
入力
の入力が入力未満の10001株を含むことになります。各行は、整数S(1?S?100000)、含まれている
ツインプライムペアのシリアル番号です。ルはルの終わりで終了し、入力。
出力
あなたはどの出力の1行を生成する必要があります入力の各行のをS番目の双子プライム含ま
ペアを。ペアは(P1、<スペース> P2)の形で印刷されます。ここで<スペース>はスペース文字を意味します(ASCII
32)。あなたが安全に100000番目のツインプライムペアの素数が20000000未満であると仮定することができる
サンプル入力
1つの
2
3
4
サンプル出力
(3,5)
(5,7)
(11,13)
(17,19)双子素数(; P + 2 p)の形の素数の対です。ポールによって鋳造された用語\ツインプライム」
Stckel(1892から1919)。RST数双子素数である(3,5)、(5,7)、(11,13)、(17,19)、(29、 31)、(41、43)。
この問題は、あなたがSがされる整数であるS番目のツインプライム対にNDうち求められ
た入力に与えられる。
入力
の入力が入力未満の10001株を含むことになります。各行は、整数S(1?S?100000)が含まれてい
その双子プライムペアのシリアル番号です。入力ルはルの終わりで終了します。
出力
あなたはS番目のツインプライム含む出力の1行を生成する必要があります入力の各行の
ペアを。ペアは、フォーム(P1、<スペース> P2)で印刷されています。ここで<スペース>はスペース文字(ASCII意味
32)。あなたが安全に100000番目のツインプライムペアの素数が20000000未満であると仮定することができる
サンプル入力
1
2
3
4
サンプル出力
(3,5)
(5,7)
(11,13)
(17,19)
質問の意味:
定義された素数ビス(P、P + 2)、P、P + 2はともに素数です。
まず数nは、n番目のダブルプライムを入力してください。
分析:
制限時間は3000ms、データ2E7の量であり、暴力を直接解決することができます。
まず、オイラーはすべての素数をふるい、そして暴力が素数で倍増できるかどうかを判断するために、すべての素数を列挙する。
ACコード:
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 typedefのペア < int型、int型 > P; P Pは[ 20000005 ]。 BOOL U [ 20000005 ]。 INT SU [ 20000005 ]。 int型NUM; ボイドオラス() { NUM = 1 。 memsetの(U、真、はsizeof (U)); 以下のために(int型 I = 2、iは<= 20000000 ; I ++ ) { もし(U [i])とSU [NUM ++] = I。 用(INT J = 1 ; J <NUM; J ++ ) { 場合(i *がSU [J]> 20000000) ブレーク。 uは[私は * SU [J] = 偽; もし(I%のsu [j] == 0) ブレーク。 } } } int型のmain() { // freopenは( "INPUT.TXT"、 "R"、STDIN)。 int型のn; オラス(); int型 NUM = 0 ; 以下のための(int型私は=2 ;私は= < 20000000 - 2 ; iは++ ) { 場合(U [I] && U [I + 2 ]) { P [NUM ++] = P(I、I + 2 )。 } } ながら(〜のscanf(" %d個"、&N)) { のprintf(" (%d個、%d)は\ n "、P [N- 1 ] 1次回、P [N- 1 ] .second)。 } 戻り 0 。 }