読者です 読者をやめる 読者になる 読者になる

Haskellで見る双子素数, いとこ素数, セクシー素数

Haskell

素数, primes.


数学者を魅了してやまない数たち.


その中でも, 特徴のある素数たちがいます. 双子素数, 三つ子素数, 四つ子素数, いとこ素数, セクシー素数,.... 何がセクシーなんでしょうか? 気になります!!! 順番に計算しつつ見ていきましょう.



今回もHaskellのprimesパッケージ*1を用いてみます. 自分で実装するのより高速であろうことを期待して.

Prelude> :m Data.Numbers.Primes
Prelude Data.Numbers.Primes>

素数の数

素数は, 無限個あります. もしそうでなければ, これほどの魅力はなかったことでしょう. 素数が無限個あることの証明は, あのユークリッドの証明が有名ですが, 次のような証明もあります.

リーマンゼータ関数\zeta(s)は,
\zeta(s) = \prod_{p:\mathrm{prime}}\frac 1 {1-p^{-s}}
となっています. ところで\zeta(2) = \pi^2 / 6無理数でです. 仮に素数が有限個しかなければ\zeta(2) = \prod_{p:\mathrm{prime}}\frac 1 {1-p^{-2}}有理数となるはずなので, 素数は無限個あります.

つまりHaskell上でprimesと打つと, その計算は永遠に終わらないということですね.

Prelude Data.Numbers.Primes> primes
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,Interrupted.

<C-c>で止めてくださいね.


次に, 素数の逆数和を考えてみましょう.
\sum_{p:\mathrm{prime}}\frac 1 p
実は, この値は発散することが知られています*2. 逆数和が発散するため, 素数が無限個あるという言い方もできます(素数が無限個あることと独立に証明することが出来るため. ここではそれはしません). 少し証明しましょう. 任意の正の実数xについて, x > \ln (1+x)が成り立ちます. よって
\sum_{p:\mathrm{prime}}\frac 1 {p-1} > \sum_{p:\mathrm{prime}} \ln \left(1 + \frac 1 {p-1}\right) = \sum_{p:\mathrm{prime}} \ln \left(\frac 1 {1-p^{-1}}\right) = \ln\left( \prod_{p:\mathrm{prime}} \frac 1 {1-p^{-1}}\right) = \ln\left( \sum_{n=1}^\infty \frac 1 n \right)
となりますが, 整数の逆数の和は発散するので, \sum_{p:\mathrm{prime}}\frac 1 {p-1} は発散します. 更に, i番目の素数p_iに対して, p_{i+1} - 1 > p_i \quad (i \ge 2)が成り立ちます. よって
\sum_{i=1}^\infty \frac 1 {p_i} > \frac 1 2 + \sum_{i=2}^\infty \frac 1 {p_{i+1}-1} = \sum_{p:\mathrm{prime}}\frac 1 {p-1} - \frac 1 2
となりますが, \sum_{p:\mathrm{prime}}\frac 1 {p-1} - \frac 1 2も発散するので, \sum_{p:\mathrm{prime}}\frac 1 pは発散します.


しかし, この発散はとても緩やかなので, Haskellで確かめようにも中々分かりません.

Prelude Data.Numbers.Primes> sum [1 / fromInteger p | p <- take 100 primes]
2.10634212147262
Prelude Data.Numbers.Primes> sum [1 / fromInteger p | p <- take 1000 primes]
2.457411276711362
Prelude Data.Numbers.Primes> sum [1 / fromInteger p | p <- take 10000 primes]
2.709258248797317
Prelude Data.Numbers.Primes> sum [1 / fromInteger p | p <- take 100000 primes]
2.9061454347538938
Prelude Data.Numbers.Primes> sum [1 / fromInteger p | p <- take 1000000 primes]
3.0682190480544462

100万個の素数の逆数和をとってようやく3を超えるような感じ. この結果だけを見てても本当に発散するか分かりませんね. しかし, 数学的な証明によってそれは保証されるのです.

素数たちの差

素数というのは, 乗法的な数なので, それらの加法的な性質というのは総じて興味深い対象となります.
素数を足したり引いたりしたら何が起こるのか. たったそんだけの決まりなのに, 数学的に面白い問題がどんどん出てくるのです.

そう. 今回は素数の差に注目しましょう.

まず, 素数素数の差が1である事ってあるのでしょうか? 差が1の整数というのは, 必ず(偶数, 奇数)のペアということになります. 偶数の素数は2しかないので, 調べるべきは(1, 2)と(2, 3)となります. 前者の1は素数ではないので却下, 3は確かに素数なので, (2, 3)が唯一, 差が1の素数のペアということになります.
このことから直ぐ分かるように, 差が奇数(2n+1)であるような素数のペアというのは, 2n+3素数であるときの(2, 2n+3)の, せいぜい一つに限ります. つまりあまり面白い事はありそうにありません.

面白いのは, 差が偶数であるような素数のペアを考えることです. 例えば差が2であるような素数のペア, 差が4であるような素数のペア... みたいに. こうなると途端に, 様々な不思議なことが起こるから面白いのです.

双子素数(twin prime)

差が2であるような素数のペア, これを双子素数といいます*3. 正確に言うと, twin primeといった場合は, p+2またはp-2素数であるような素数pの事を言い, twin primesといった場合はそういうペア(p, p+2)を言うそうです. ともかく素数を下から数えていくと,

Prelude Data.Numbers.Primes> take 20 primes
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71]

「2, 3, 5, 7, 11, 13...」となりますが, この時点で既に, (3, 5)や(5, 7)が双子素数のペアであることが分かります. しかし(7, 9)は9が素数ではないのでアウトです. 次は(11, 13)が双子素数のペアとなります.
Haskellでこういう双子素数を見つけるにはどうしたら良いでしょうか. ものすごく馬鹿な書き方をすると,

Prelude Data.Numbers.Primes> [(p1, p2) | p1 <- primes, p2 <- primes, p1 + 2 == p2]
^CInterrupted.

うーん, これではダメです. もう少しきちんと考えましょう.
双子素数の差は2です. これって, 差が1であるような(2, 3)を考えなければ, 最小の素数ギャップです. と言うことは, 必ず双子素数素数列の中で隣り合っています. つまり双子素数のペア(p, p+2)があった時に, それらの間にp, p+1, p+2みたいに入り込むような素数p+1はありえません. ならば, 最初に隣合う素数のペアを作りましょう.

Prelude Data.Numbers.Primes> zip primes (tail primes)
[(2,3),(3,5),(5,7),(7,11),(11,13),(13,17),(17,19),(19,23),(23,29),(29,31),(31,37),(37,41),(41,43),(43,47),(47,53),(53,59),(59,61),(61,67),(67,71),(71,73),(73,79),(79,83),(83,89),(89,97),(97,101),(101,103),(103,107),(107,109),(109,113),(113,127),(127,131),(131,137),(137,139),(139,149),(149,151),(151,157),(157,163),(163,167),(167,173),(173,179),(179,181),(181,191),(191,193),(193,197),(197,199),(199,211),(211,223),(223,227),(227,229),(229,233),(233,239),(239,241),(241,251),(251,257),(257,263),(263,269),(269,271),(271,277),(277,281),(281,283),(283,293),(293,307),(307,311),(311,313),(313,317),(317,331),(331,337),(337,347),(347,349),(349,353),(353,359),(359,367),(367,373),(373,379),(379,383),(383,389),(389,397),(397,401),(401,409),(409,419),(419,421),(421,431),(431,433),(433,439),(439,443),(443,449),(449,457),(457,461),(461,463),(463,467),(467,479),(479,487),(487,491),(491,499),(499,503),(503,509),(509,521),(521,523),(523,541),(541,547),(547,557),(557,563),(563,569),(569,571),(571,577),(577,587),(587,593),(593,599),(599,601),(601,607),(607,613),(613,617),(617,619),(619,631),(631,641),(641,643),(643,647),(647,653),(653,659),(659,661),(661,673),(673,677),(677,683),(683,691),(691,701),(701,709),(709,719),(719,727),(727,733),(733,739),(739,743),(743,751),(751,757),(757,761),(761,769),(769,773),(773,787),(787,797),(797,809),(809,811)^CInterrupted.

この中から差が2であるようなペアを取り出します.

Prelude Data.Numbers.Primes> [(p1, p2) | (p1, p2) <- zip primes (tail primes), p1 + 2 == p2]
[(3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61),(71,73),(101,103),(107,109),(137,139),(149,151),(179,181),(191,193),(197,199),(227,229),(239,241),(269,271),(281,283),(311,313),(347,349),(419,421),(431,433),(461,463),(521,523),(569,571),(599,601),(617,619),(641,643),(659,661),(809,811),(821,823),(827,829),(857,859),(881,883),(1019,1021),(1031,1033),(1049,1051),(1061,1063),(1091,1093),(1151,1153),(1229,1231),(1277,1279),(1289,1291),(1301,1303),(1319,1321),(1427,1429),(1451,1453),(1481,1483),(1487,1489),(1607,1609),(1619,1621),(1667,1669),(1697,1699),(1721,1723),(1787,1789),(1871,1873),(1877,1879),(1931,1933),(1949,1951),(1997,1999),(2027,2029),(2081,2083),(2087,2089),(2111,2113),(2129,2131),(2141,2143),(2237,2239),(2267,2269),(2309,2311),(2339,2341),(2381,2383),(2549,2551),(2591,2593),(2657,2659),(2687,2689),(2711,2713),(2729,2731),(2789,2791),(2801,2803),(2969,2971),(2999,3001),(3119,3121),(3167,3169),(3251,3253),(3257,3259),(3299,3301),(3329,3331),(3359,3361),(3371,3373),(3389,3391),(3461,3463),(3467,3469),(3527,3529),(3539,3541),(3557,3559),(3581,3583),(3671,3673),(3767,3769),(3821,3823),(3851,3853),(3917,3919),(3929,3931),(4001,4003),(4019,4021),(4049,4051),(4091,4093),(4127,4129),(4157,4159),(4217,4219),(4229,4231),(4241,4243),(4259,4261),(4271,4273),(4337,4339),(4421,4423),(4481,4483),(4517,4519),(4547,4549),(4637,4639),(4649,4651),(4721,4723),(4787,4789),(4799,48^C6197Interrupted.

おお, 一瞬で大量の双子素数ペアが出てきました!!! これをtwins(双子たち)と名づけましょう.

Prelude Data.Numbers.Primes> let twins = [(p1, p2) | (p1, p2) <- zip primes (tail primes), p1 + 2 == p2]
Prelude Data.Numbers.Primes> take 100 twins
[(3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61),(71,73),(101,103),(107,109),(137,139),(149,151),(179,181),(191,193),(197,199),(227,229),(239,241),(269,271),(281,283),(311,313),(347,349),(419,421),(431,433),(461,463),(521,523),(569,571),(599,601),(617,619),(641,643),(659,661),(809,811),(821,823),(827,829),(857,859),(881,883),(1019,1021),(1031,1033),(1049,1051),(1061,1063),(1091,1093),(1151,1153),(1229,1231),(1277,1279),(1289,1291),(1301,1303),(1319,1321),(1427,1429),(1451,1453),(1481,1483),(1487,1489),(1607,1609),(1619,1621),(1667,1669),(1697,1699),(1721,1723),(1787,1789),(1871,1873),(1877,1879),(1931,1933),(1949,1951),(1997,1999),(2027,2029),(2081,2083),(2087,2089),(2111,2113),(2129,2131),(2141,2143),(2237,2239),(2267,2269),(2309,2311),(2339,2341),(2381,2383),(2549,2551),(2591,2593),(2657,2659),(2687,2689),(2711,2713),(2729,2731),(2789,2791),(2801,2803),(2969,2971),(2999,3001),(3119,3121),(3167,3169),(3251,3253),(3257,3259),(3299,3301),(3329,3331),(3359,3361),(3371,3373),(3389,3391),(3461,3463),(3467,3469),(3527,3529),(3539,3541),(3557,3559),(3581,3583),(3671,3673),(3767,3769),(3821,3823)]

他のサイトのデータ*4と少し確かめてみましょう. 例えば, 1000番目の双子素数ペアは

Prelude Data.Numbers.Primes> twins !! (1000 - 1)
(79559,79561)

です. Haskellのインデックスは0から始まることに注意しましょう. 5000番目は

Prelude Data.Numbers.Primes> twins !! (5000 - 1)
(557519,557521)

10000番目は

Prelude Data.Numbers.Primes> twins !! (10000 - 1)
(1260989,1260991)

20000番目は

Prelude Data.Numbers.Primes> twins !! (20000 - 1)
(2840417,2840419)

となります. 確かにhttp://arnflo.se/~site_files/Other/twinprimesの最後と同じものであることが確かめられます.

双子素数は無限個あるのでしょうか. なんと, これは数学上の未解決問題の一つとなっています!!! 今の段階では, だれもこの問にきちんと答えることが出来ないのです. こんなことさえ数学者は分からないのか, という気分になりますよね...

では, 双子素数の逆数の和は発散するのでしょうか. 驚くべきことに, これは収束することが知られていています. この収束先
B = \;\sum_{p, p+2 : \mathrm{prime}} \left(\frac 1 p + \frac 1 {p+2} \right)
はブルンの定数と呼ばれ, およそ1.90216であることが知られています*5. 素数の逆数和は発散するけれど, 双子素数の逆数和は収束するのです. 不思議ではありませんか? やはりHaskellで見てみると,

Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 100 twins]
1.582726249444065
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 1000 twins]
1.6677728245395598
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 10000 twins]
1.7140371252420101
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 100000 twins]
1.7443311906887276
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 1000000 twins]
1.7656681176412081

つまり, 100万番目の双子素数ペア

Prelude Data.Numbers.Primes> twins !! (1000000 - 1)
(252427601,252427603)

まで以ってしても, ブルンの定数の1.9はおろか1.8にすら届いていません. 現在では10^{16}までの双子素数からブルンの定数は計算されています. (私が行った計算は, たったの10^{8}程度に過ぎません!)

双子素数の逆数和が収束するからと言って, 双子素数が有限個とは限りません. ブルンの定数は有理数無理数かすら分かっていません. もし無理数であることが分かったというならば, それは双子素数が無限個あるということになるはずです. ところが, ブルンの定数が有理数であることが分かったとしても, 双子素数が有限個であるということにはなりません(たぶん...直感的にはこうですが, なにか私の知らない命題があるのかも.).

双子素数についてはこれくらいにしておきましょう. まだまだ紹介したいことがいっぱいあるからです.

三つ子素数(prime triplet)

赤ちゃんが二人生まれるのが双子ならば, 三人生まれるのが三つ子です. 素数にも三つ子というのがあります.
双子素数のペアというのは, pp+2素数であるような(p, p+2)のことでした. ではpp+2p+4素数であるような(p, p+2, p+4)はあるのでしょうか. 実はそういうペアは(3, 5, 7)しかないということが分かります. なぜなら, p, p+2, p+4\mathrm{mod}\,3ではp, p+2, p+1となり, 必ず3の倍数が一つだけ含みます. 3の倍数でかつ素数であるのは3のみであり, 3以下の奇数の素数はない, 上を見てみると5も7も素数, よってこういうペアは(3, 5, 7)のみということです.
実は, 三つ子素数はこういうのを言うのではありません. ケースが少ないことが自明なものに名前をつけて考えてもしょうが無いからです. 三つ子素数の組というのは, 素数(p, p+2, p+6)または(p, p+4, p+6)の事を言います*6. 差が4となることの注意しましょう. 今後, スーパー多胎児が出てきますが, 差が6となると流石に差が開き過ぎなので, この「差がせいぜい4」というのを重要視することにします.

まずは(p, p+2, p+6)のケースを考えましょう. 先程と同様に, pp+2は隣り合った素数です. 更に, p+4素数であるのはp=3の時のみ(しかも3+6素数ではない!)ので, 結局この三つ組は隣り合った3つの素数ということになります. よって, やはりzip3によって求められます.

Prelude Data.Numbers.Primes> zip3 primes (tail primes) (tail (tail primes))
[(2,3,5),(3,5,7),(5,7,11),(7,11,13),(11,13,17),(13,17,19),(17,19,23),(19,23,29),(23,29,31),(29,31,37),(31,37,41),(37,41,43),(41,43,47),(43,47,53),(47,53,59),(53,59,61),(59,61,67),(61,67,71),(67,71,73),(71,73,79),(73,79,83),(79,83,89),(83,89,97),(89,97,101),(97,101,103),(101,103,107),(103,107,109),(107,109,113),(109,113,127),(113,127,131),(127,131,137),(131,137,139),(137,139,149),(139,149,151),(149,151,157),(151,157,163),(157,163,167),(163,167,173),(167,173,179),(173,179,181),(179,181,191),(181,191,193),(191,193,197),(193,197,199),(197,199,211),(199,211,223),(211,223,227),(223,227,229),(227,229,233),(229,233,239),(233,239,241)^CInterrupted.
Prelude Data.Numbers.Primes> [(p1, p2, p3) | (p1, p2, p3) <- zip3 primes (tail primes) (tail (tail primes)), p1 + 2 == p2, p2 + 2 == p3]
[(3,5,7)^CInterrupted.

おっと間違えました. これは(3, 5, 7)しかないんでしたね...

Prelude Data.Numbers.Primes> [(p1, p2, p3) | (p1, p2, p3) <- zip3 primes (tail primes) (tail (tail primes)), p1 + 2 == p2, p2 + 4 == p3]
[(5,7,11),(11,13,17),(17,19,23),(41,43,47),(101,103,107),(107,109,113),(191,193,197),(227,229,233),(311,313,317),(347,349,353),(461,463,467),(641,643,647),(821,823,827),(857,859,863),(881,883,887),(1091,1093,1097),(1277,1279,1283),(1301,1303,1307),(1427,1429,1433),(1481,1483,1487),(1487,1489,1493),(1607,1609,1613),(1871,1873,1877),(1997,1999,2003),(2081,2083,2087),(2237,2239,2243),(2267,2269,2273),(2657,2659,2663),(2687,2689,2693),(3251,3253,3257),(3461,3463,3467),(3527,3529,3533),(3671,3673,3677),(3917,3919,3923),(4001,4003,4007),(4127,4129,4133),(4517,4519,4523),(4637,4639,4643),(4787,4789,4793),(4931,4933,4937),(4967,4969,4973),(5231,5233,5237),(5477,5479,5483),(5501,5503,5507),(5651,5653,5657),(6197,6199,6203),(6827,6829,6833),(7877,7879,7883),(8087,8089,8093),(8231,8233,8237),(8291,8293,8297),(8537,8539,8543),(8861,8863,8867),(9431,9433,9437),(9461,9463,9467),(10331,10333,10337),(10427,10429,10433),(10457,10459,10463),(11171,11173,11177),(11777,11779,11783),(12107,12109,12113),(12917,12919,12923),(13001,13003,13007),(13691,13693,13697),(13757,13759,13763),(13877,13879,13883),(13901,13903,13907),(14081,14083,14087),(14321,14323,14327),(14627,14629,14633),(15641,15643,15647),(15731,15733,15737),(16061,16063,16067),(16067,16069,16073),(16187,16189,16193),(17027,17029,17033),(17387,17389,17393),(18041,18043,18047),(18251,18253,18257),(18911,18913,18917),(19421,19423,19427),(19427,19429,19433),(19991,19993,19997),(20477,20479,20483),(20747,20749,20753),(20897,20899,20903),(21011,21013,21017),(21017,21019,21023),(21317,21319,21323),(21377,21379,21383),(21557,21559,21563),(21611,21613,21617),(22271,22273,22277),(22277,22279,22283),(22637,22639,22643),(23057,23059,23063),(23291,23293,23297),(23561,23563,23567),(23627,23629,23633),(23741,23743,23747),(24107,24109,24113),(24917,24919,24923),(25031,25033,25037),(25301,25303,25307),(25577,25579,25583),(25997,25999,26003),(26261,26263,26267),(26681,26683,26687),(26711,26713,26717),(27737,27739,27743),(27941,27943,27947),(28277,28279,282^C349,33353),(33617,33619,33623),(33767,33769,33773)Interrupted.

ぎゃぁーーー やっぱりいっぱいあるんですねー... triplet1としましょう.

Prelude Data.Numbers.Primes> let triplet1 = [(p1, p2, p3) | (p1, p2, p3) <- zip3 primes (tail primes) (tail (tail primes)), p1 + 2 == p2, p2 + 4 == p3]
Prelude Data.Numbers.Primes> take 100 triplet1
[(5,7,11),(11,13,17),(17,19,23),(41,43,47),(101,103,107),(107,109,113),(191,193,197),(227,229,233),(311,313,317),(347,349,353),(461,463,467),(641,643,647),(821,823,827),(857,859,863),(881,883,887),(1091,1093,1097),(1277,1279,1283),(1301,1303,1307),(1427,1429,1433),(1481,1483,1487),(1487,1489,1493),(1607,1609,1613),(1871,1873,1877),(1997,1999,2003),(2081,2083,2087),(2237,2239,2243),(2267,2269,2273),(2657,2659,2663),(2687,2689,2693),(3251,3253,3257),(3461,3463,3467),(3527,3529,3533),(3671,3673,3677),(3917,3919,3923),(4001,4003,4007),(4127,4129,4133),(4517,4519,4523),(4637,4639,4643),(4787,4789,4793),(4931,4933,4937),(4967,4969,4973),(5231,5233,5237),(5477,5479,5483),(5501,5503,5507),(5651,5653,5657),(6197,6199,6203),(6827,6829,6833),(7877,7879,7883),(8087,8089,8093),(8231,8233,8237),(8291,8293,8297),(8537,8539,8543),(8861,8863,8867),(9431,9433,9437),(9461,9463,9467),(10331,10333,10337),(10427,10429,10433),(10457,10459,10463),(11171,11173,11177),(11777,11779,11783),(12107,12109,12113),(12917,12919,12923),(13001,13003,13007),(13691,13693,13697),(13757,13759,13763),(13877,13879,13883),(13901,13903,13907),(14081,14083,14087),(14321,14323,14327),(14627,14629,14633),(15641,15643,15647),(15731,15733,15737),(16061,16063,16067),(16067,16069,16073),(16187,16189,16193),(17027,17029,17033),(17387,17389,17393),(18041,18043,18047),(18251,18253,18257),(18911,18913,18917),(19421,19423,19427),(19427,19429,19433),(19991,19993,19997),(20477,20479,20483),(20747,20749,20753),(20897,20899,20903),(21011,21013,21017),(21017,21019,21023),(21317,21319,21323),(21377,21379,21383),(21557,21559,21563),(21611,21613,21617),(22271,22273,22277),(22277,22279,22283),(22637,22639,22643),(23057,23059,23063),(23291,23293,23297),(23561,23563,23567),(23627,23629,23633),(23741,23743,23747)]

OEISのリスト http://oeis.org/A022004/b022004.txt と比べてみますよ.

Prelude Data.Numbers.Primes> triplet1 !! (500 - 1)
(253607,253609,253613)
Prelude Data.Numbers.Primes> triplet1 !! (1000 - 1)
(644051,644053,644057)

はい, 合ってますね.


(p, p+4, p+6)のケースも調べてみます. 先程と同様に, p+2素数であることはありませんので, やはりこれら3つは隣り合っています.

Prelude Data.Numbers.Primes> let triplet2 = [(p1, p2, p3) | (p1, p2, p3) <- zip3 primes (tail primes) (tail (tail primes)), p1 + 4 == p2, p2 + 2 == p3]
Prelude Data.Numbers.Primes> take 100 triplet2
[(7,11,13),(13,17,19),(37,41,43),(67,71,73),(97,101,103),(103,107,109),(193,197,199),(223,227,229),(277,281,283),(307,311,313),(457,461,463),(613,617,619),(823,827,829),(853,857,859),(877,881,883),(1087,1091,1093),(1297,1301,1303),(1423,1427,1429),(1447,1451,1453),(1483,1487,1489),(1663,1667,1669),(1693,1697,1699),(1783,1787,1789),(1867,1871,1873),(1873,1877,1879),(1993,1997,1999),(2083,2087,2089),(2137,2141,2143),(2377,2381,2383),(2683,2687,2689),(2707,2711,2713),(2797,2801,2803),(3163,3167,3169),(3253,3257,3259),(3457,3461,3463),(3463,3467,3469),(3847,3851,3853),(4153,4157,4159),(4513,4517,4519),(4783,4787,4789),(5227,5231,5233),(5413,5417,5419),(5437,5441,5443),(5647,5651,5653),(5653,5657,5659),(5737,5741,5743),(6547,6551,6553),(6823,6827,6829),(7207,7211,7213),(7753,7757,7759),(7873,7877,7879),(8287,8291,8293),(8623,8627,8629),(9007,9011,9013),(9277,9281,9283),(9337,9341,9343),(9433,9437,9439),(10267,10271,10273),(10453,10457,10459),(11113,11117,11119),(11827,11831,11833),(12037,12041,12043),(12157,12161,12163),(12373,12377,12379),(13003,13007,13009),(13687,13691,13693),(13873,13877,13879),(14557,14561,14563),(15643,15647,15649),(15727,15731,15733),(15733,15737,15739),(16057,16061,16063),(16063,16067,16069),(16183,16187,16189),(16447,16451,16453),(17203,17207,17209),(17383,17387,17389),(18043,18047,18049),(18127,18131,18133),(18307,18311,18313),(18517,18521,18523),(18913,18917,18919),(19207,19211,19213),(19417,19421,19423),(19423,19427,19429),(20143,20147,20149),(20353,20357,20359),(20743,20747,20749),(21013,21017,21019),(21187,21191,21193),(21313,21317,21319),(21487,21491,21493),(21517,21521,21523),(22153,22157,22159),(22273,22277,22279),(22567,22571,22573),(23053,23057,23059),(23197,23201,23203),(23557,23561,23563),(23623,23627,23629)]

やはりOEISのリスト http://oeis.org/A022005/b022005.txt と比べてみましょう.

Prelude Data.Numbers.Primes> triplet2 !! (500 - 1)
(244837,244841,244843)
Prelude Data.Numbers.Primes> triplet2 !! (1000 - 1)
(592387,592391,592393)

ちゃんと合ってますよ.

双子素数がそうであったように, 三つ子素数もまた, 無限にあるのか分かっていません.

四つ子素数(prime quadruplet)

三つ子素数があるならば四つ子素数もあります. 四つ子素数の組というのは, 素数(p, p+2, p+6, p+8)の事を言います*7. やはり先程の論法で, p+4は抜いています.
すぐに分かるように, 四つ子素数の組(p, p+2, p+6, p+8)は三つ子素数(p, p+2, p+6), (p+2, p+6, p+8)を含み, 更に双子素数(p,p+2), (p+6, p+8)も含みます.
街中で四つ子のうちの二人を連れていて, 「あら奥様, 双子ですか?」 「いいえ, 四つ子うちの三番目と一番下の子ですのよ. オホホ...」 「あらまぁ!!!」みたいな感じですね.

Haskellで見てみます. quadrupletの名づけましょう. いい加減zipするのは飽きてきたので, isPrimeという関数を使いましょう.

Prelude Data.Numbers.Primes> :i isPrime
isPrime :: Integral int => int -> Bool
  	-- Defined in Data.Numbers.Primes
Prelude Data.Numbers.Primes> let quadruplet = [(p, p+2, p+6, p+8) | p <- primes, isPrime (p+2), isPrime (p+6), isPrime (p+8)]
Prelude Data.Numbers.Primes> take 100 quadruplet
[(5,7,11,13),(11,13,17,19),(101,103,107,109),(191,193,197,199),(821,823,827,829),(1481,1483,1487,1489),(1871,1873,1877,1879),(2081,2083,2087,2089),(3251,3253,3257,3259),(3461,3463,3467,3469),(5651,5653,5657,5659),(9431,9433,9437,9439),(13001,13003,13007,13009),(15641,15643,15647,15649),(15731,15733,15737,15739),(16061,16063,16067,16069),(18041,18043,18047,18049),(18911,18913,18917,18919),(19421,19423,19427,19429),(21011,21013,21017,21019),(22271,22273,22277,22279),(25301,25303,25307,25309),(31721,31723,31727,31729),(34841,34843,34847,34849),(43781,43783,43787,43789),(51341,51343,51347,51349),(55331,55333,55337,55339),(62981,62983,62987,62989),(67211,67213,67217,67219),(69491,69493,69497,69499),(72221,72223,72227,72229),(77261,77263,77267,77269),(79691,79693,79697,79699),(81041,81043,81047,81049),(82721,82723,82727,82729),(88811,88813,88817,88819),(97841,97843,97847,97849),(99131,99133,99137,99139),(101111,101113,101117,101119),(109841,109843,109847,109849),(116531,116533,116537,116539),(119291,119293,119297,119299),(122201,122203,122207,122209),(135461,135463,135467,135469),(144161,144163,144167,144169),(157271,157273,157277,157279),(165701,165703,165707,165709),(166841,166843,166847,166849),(171161,171163,171167,171169),(187631,187633,187637,187639),(194861,194863,194867,194869),(195731,195733,195737,195739),(201491,201493,201497,201499),(201821,201823,201827,201829),(217361,217363,217367,217369),(225341,225343,225347,225349),(240041,240043,240047,240049),(243701,243703,243707,243709),(247601,247603,247607,247609),(247991,247993,247997,247999),(257861,257863,257867,257869),(260411,260413,260417,260419),(266681,266683,266687,266689),(268811,268813,268817,268819),(276041,276043,276047,276049),(284741,284743,284747,284749),(285281,285283,285287,285289),(294311,294313,294317,294319),(295871,295873,295877,295879),(299471,299473,299477,299479),(300491,300493,300497,300499),(301991,301993,301997,301999),(326141,326143,326147,326149),(334421,334423,334427,334429),(340931,340933,340937,340939),(346391,346393,346397,346399),(347981,347983,347987,347989),(354251,354253,354257,354259),(358901,358903,358907,358909),(361211,361213,361217,361219),(375251,375253,375257,375259),(388691,388693,388697,388699),(389561,389563,389567,389569),(392261,392263,392267,392269),(394811,394813,394817,394819),(397541,397543,397547,397549),(397751,397753,397757,397759),(402131,402133,402137,402139),(402761,402763,402767,402769),(412031,412033,412037,412039),(419051,419053,419057,419059),(420851,420853,420857,420859),(427241,427243,427247,427249),(442571,442573,442577,442579),(444341,444343,444347,444349),(452531,452533,452537,452539),(463451,463453,463457,463459),(465161,465163,465167,465169),(467471,467473,467477,467479),(470081,470083,470087,470089)]

OEISのリスト http://oeis.org/A007530/b007530.txt で確かめますよ.

Prelude Data.Numbers.Primes> quadruplet !! (500 - 1)
(4370081,4370083,4370087,4370089)
Prelude Data.Numbers.Primes> quadruplet !! (1000 - 1)
(11721791,11721793,11721797,11721799)

ほいほい 合ってます♪

やはり四つ組素数も無限個あるのか分かっていません. もし四つ組素数が無限個あるのが分かっているならば, 双子素数だって無限個あるのです.

四つ子素数の逆数の和
B_4 = \quad\sum_{p, p+2, p+6, p+8 : \mathrm{prime}} \left(\frac 1 p + \frac 1 {p+2} + \frac 1 {p+6} + \frac 1 {p+8} \right)
は収束することが知られています. その値はおよそ0.8705883800±0.0000000005とのことです*8. Haskellで確かめてみますと,

Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 + 1 / fromInteger p3 + 1 / fromInteger p4 | (p1, p2, p3, p4) <- take 100 quadruplet]
0.8679989010925312
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 + 1 / fromInteger p3 + 1 / fromInteger p4 | (p1, p2, p3, p4) <- take 1000 quadruplet]
0.8693053051446884
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 + 1 / fromInteger p3 + 1 / fromInteger p4 | (p1, p2, p3, p4) <- take 10000 quadruplet]
0.8698308911215608

うーん...!!! 頑張って四つ組素数を1万個

Prelude Data.Numbers.Primes> quadruplet !! (10000 - 1)
(265201421,265201423,265201427,265201429)

まで計算し, ここまでの逆数和が0.8698308911215608と, 正確な値0.8705883800の99.9%以上の精度で合ってます!!! 凄いっ!!!

五つ子素数(prime quintuplet)

四つ子があるなら五つ子もあります. 四つ子素数(p, p+2, p+6, p+8)でした. さらにp+10素数であるケースはp=3を除いてありません. なぜなら, これを足した五つ子は必ず3の倍数を含むからです. よって五つ子素数(p, p+2, p+6, p+8, p+12)を考えます. 或いは, (p - 4, p, p+2, p+6, p+8)のケースも五つ子素数として考えます. この2つは, (三つ子素数が二種類あったように)全く別々のケースです. p+12型とp-4型として, それぞれ見ていきます*9. まずはp+12型から.

Prelude Data.Numbers.Primes> let quintuplet1 = [(p, p+2, p+6, p+8, p+12) | p <- primes, isPrime (p+2), isPrime (p+6), isPrime (p+8), isPrime (p+12)]
Prelude Data.Numbers.Primes> take 100 quintuplet1
[(5,7,11,13,17),(11,13,17,19,23),(101,103,107,109,113),(1481,1483,1487,1489,1493),(16061,16063,16067,16069,16073),(19421,19423,19427,19429,19433),(21011,21013,21017,21019,21023),(22271,22273,22277,22279,22283),(43781,43783,43787,43789,43793),(55331,55333,55337,55339,55343),(144161,144163,144167,144169,144173),(165701,165703,165707,165709,165713),(166841,166843,166847,166849,166853),(195731,195733,195737,195739,195743),(201821,201823,201827,201829,201833),(225341,225343,225347,225349,225353),(247601,247603,247607,247609,247613),(268811,268813,268817,268819,268823),(326141,326143,326147,326149,326153),(347981,347983,347987,347989,347993),(361211,361213,361217,361219,361223),(397751,397753,397757,397759,397763),(465161,465163,465167,465169,465173),(518801,518803,518807,518809,518813),(536441,536443,536447,536449,536453),(633461,633463,633467,633469,633473),(633791,633793,633797,633799,633803),(661091,661093,661097,661099,661103),(768191,768193,768197,768199,768203),(795791,795793,795797,795799,795803),(829721,829723,829727,829729,829733),(857951,857953,857957,857959,857963),(876011,876013,876017,876019,876023),(958541,958543,958547,958549,958553),(1008851,1008853,1008857,1008859,1008863),(1022501,1022503,1022507,1022509,1022513),(1063961,1063963,1063967,1063969,1063973),(1068701,1068703,1068707,1068709,1068713),(1091261,1091263,1091267,1091269,1091273),(1172531,1172533,1172537,1172539,1172543),(1173581,1173583,1173587,1173589,1173593),(1210871,1210873,1210877,1210879,1210883),(1246361,1246363,1246367,1246369,1246373),(1340321,1340323,1340327,1340329,1340333),(1351241,1351243,1351247,1351249,1351253),(1358801,1358803,1358807,1358809,1358813),(1368461,1368463,1368467,1368469,1368473),(1461401,1461403,1461407,1461409,1461413),(1573541,1573543,1573547,1573549,1573553),(1615841,1615843,1615847,1615849,1615853),(1917731,1917733,1917737,1917739,1917743),(1925381,1925383,1925387,1925389,1925393),(1943651,1943653,1943657,1943659,1943663),(1954361,1954363,1954367,1954369,1954373),(1959311,1959313,1959317,1959319,1959323),(2007611,2007613,2007617,2007619,2007623),(2136131,2136133,2136137,2136139,2136143),(2203961,2203963,2203967,2203969,2203973),(2225051,2225053,2225057,2225059,2225063),(2342771,2342773,2342777,2342779,2342783),(2418671,2418673,2418677,2418679,2418683),(2499941,2499943,2499947,2499949,2499953),(2508041,2508043,2508047,2508049,2508053),(2564321,2564323,2564327,2564329,2564333),(2604731,2604733,2604737,2604739,2604743),(2728541,2728543,2728547,2728549,2728553),(2759291,2759293,2759297,2759299,2759303),(2764121,2764123,2764127,2764129,2764133),(2822711,2822713,2822717,2822719,2822723),(2839931,2839933,2839937,2839939,2839943),(2840261,2840263,2840267,2840269,2840273),(2846861,2846863,2846867,2846869,2846873),(2989031,2989033,2989037,2989039,2989043),(3047411,3047413,3047417,3047419,3047423),(3058871,3058873,3058877,3058879,3058883),(3103271,3103273,3103277,3103279,3103283),(3153581,3153583,3153587,3153589,3153593),(3171731,3171733,3171737,3171739,3171743),(3200201,3200203,3200207,3200209,3200213),(3207431,3207433,3207437,3207439,3207443),(3243341,3243343,3243347,3243349,3243353),(3400211,3400213,3400217,3400219,3400223),(3436241,3436243,3436247,3436249,3436253),(3467531,3467533,3467537,3467539,3467543),(3621461,3621463,3621467,3621469,3621473),(3713441,3713443,3713447,3713449,3713453),(3837131,3837133,3837137,3837139,3837143),(3837851,3837853,3837857,3837859,3837863),(3894041,3894043,3894047,3894049,3894053),(4042601,4042603,4042607,4042609,4042613),(4059191,4059193,4059197,4059199,4059203),(4155911,4155913,4155917,4155919,4155923),(4218281,4218283,4218287,4218289,4218293),(4224371,4224373,4224377,4224379,4224383),(4262171,4262173,4262177,4262179,4262183),(4336091,4336093,4336097,4336099,4336103),(4413581,4413583,4413587,4413589,4413593),(4540091,4540093,4540097,4540099,4540103),(4609301,4609303,4609307,4609309,4609313),(4740641,4740643,4740647,4740649,4740653)]
Prelude Data.Numbers.Primes> quintuplet1 !! (100 - 1)
(4740641,4740643,4740647,4740649,4740653)
Prelude Data.Numbers.Primes> quintuplet1 !! (200 - 1)
(14812871,14812873,14812877,14812879,14812883)

五つ子にまでなると, かなり数が少ないため, 計算に時間がかかるようになります. 取り敢えず200番目のp+12型五つ子素数http://oeis.org/A022006/b022006.txt を見ると合ってますね.

p-4型も見てみます.

Prelude Data.Numbers.Primes> let quintuplet2 = [(p, p+4, p+6, p+10, p+12) | p <- primes, isPrime (p+4), isPrime (p+6), isPrime (p+10), isPrime (p+12)]
Prelude Data.Numbers.Primes> take 100 quintuplet2
[(7,11,13,17,19),(97,101,103,107,109),(1867,1871,1873,1877,1879),(3457,3461,3463,3467,3469),(5647,5651,5653,5657,5659),(15727,15731,15733,15737,15739),(16057,16061,16063,16067,16069),(19417,19421,19423,19427,19429),(43777,43781,43783,43787,43789),(79687,79691,79693,79697,79699),(88807,88811,88813,88817,88819),(101107,101111,101113,101117,101119),(257857,257861,257863,257867,257869),(266677,266681,266683,266687,266689),(276037,276041,276043,276047,276049),(284737,284741,284743,284747,284749),(340927,340931,340933,340937,340939),(354247,354251,354253,354257,354259),(375247,375251,375253,375257,375259),(402757,402761,402763,402767,402769),(419047,419051,419053,419057,419059),(427237,427241,427243,427247,427249),(463447,463451,463453,463457,463459),(470077,470081,470083,470087,470089),(626617,626621,626623,626627,626629),(666427,666431,666433,666437,666439),(736357,736361,736363,736367,736369),(823717,823721,823723,823727,823729),(855727,855731,855733,855737,855739),(959467,959471,959473,959477,959479),(978067,978071,978073,978077,978079),(1022377,1022381,1022383,1022387,1022389),(1043587,1043591,1043593,1043597,1043599),(1068247,1068251,1068253,1068257,1068259),(1091257,1091261,1091263,1091267,1091269),(1118857,1118861,1118863,1118867,1118869),(1146787,1146791,1146793,1146797,1146799),(1155607,1155611,1155613,1155617,1155619),(1167697,1167701,1167703,1167707,1167709),(1182277,1182281,1182283,1182287,1182289),(1230367,1230371,1230373,1230377,1230379),(1285507,1285511,1285513,1285517,1285519),(1324567,1324571,1324573,1324577,1324579),(1440577,1440581,1440583,1440587,1440589),(1446997,1447001,1447003,1447007,1447009),(1525957,1525961,1525963,1525967,1525969),(1573927,1573931,1573933,1573937,1573939),(1588747,1588751,1588753,1588757,1588759),(1615837,1615841,1615843,1615847,1615849),(1621717,1621721,1621723,1621727,1621729),(1830337,1830341,1830343,1830347,1830349),(1837387,1837391,1837393,1837397,1837399),(1904467,1904471,1904473,1904477,1904479),(1910257,1910261,1910263,1910267,1910269),(1954357,1954361,1954363,1954367,1954369),(2002327,2002331,2002333,2002337,2002339),(2016397,2016401,2016403,2016407,2016409),(2050327,2050331,2050333,2050337,2050339),(2087377,2087381,2087383,2087387,2087389),(2176627,2176631,2176633,2176637,2176639),(2202787,2202791,2202793,2202797,2202799),(2248237,2248241,2248243,2248247,2248249),(2381077,2381081,2381083,2381087,2381089),(2470327,2470331,2470333,2470337,2470339),(2478517,2478521,2478523,2478527,2478529),(2479657,2479661,2479663,2479667,2479669),(2535097,2535101,2535103,2535107,2535109),(2546227,2546231,2546233,2546237,2546239),(2552107,2552111,2552113,2552117,2552119),(2552647,2552651,2552653,2552657,2552659),(2594947,2594951,2594953,2594957,2594959),(2674537,2674541,2674543,2674547,2674549),(2683777,2683781,2683783,2683787,2683789),(2805157,2805161,2805163,2805167,2805169),(2822707,2822711,2822713,2822717,2822719),(2839927,2839931,2839933,2839937,2839939),(2893477,2893481,2893483,2893487,2893489),(2927797,2927801,2927803,2927807,2927809),(2952787,2952791,2952793,2952797,2952799),(3076387,3076391,3076393,3076397,3076399),(3224857,3224861,3224863,3224867,3224869),(3243337,3243341,3243343,3243347,3243349),(3374467,3374471,3374473,3374477,3374479),(3400207,3400211,3400213,3400217,3400219),(3416047,3416051,3416053,3416057,3416059),(3512227,3512231,3512233,3512237,3512239),(3586897,3586901,3586903,3586907,3586909),(3690517,3690521,3690523,3690527,3690529),(3995437,3995441,3995443,3995447,3995449),(4157887,4157891,4157893,4157897,4157899),(4265077,4265081,4265083,4265087,4265089),(4332607,4332611,4332613,4332617,4332619),(4487797,4487801,4487803,4487807,4487809),(4510477,4510481,4510483,4510487,4510489),(4529377,4529381,4529383,4529387,4529389),(4543237,4543241,4543243,4543247,4543249),(4647277,4647281,4647283,4647287,4647289),(4693687,4693691,4693693,4693697,4693699),(4706407,4706411,4706413,4706417,4706419),(4852447,4852451,4852453,4852457,4852459)]
Prelude Data.Numbers.Primes> quintuplet2 !! (100 - 1)
(4852447,4852451,4852453,4852457,4852459)
Prelude Data.Numbers.Primes> quintuplet2 !! (200 - 1)
(14520547,14520551,14520553,14520557,14520559)

OEISのリスト http://oeis.org/A022007/b022007.txt と合ってることが確かめられます.

割と時間がかかるので, isPrimeを使わずに最初みたいにzipを使ったほうが効率良いかもですね...

Prelude Data.Numbers.Primes> :m Data.Numbers.Primes Data.List
Prelude Data.Numbers.Primes Data.List> let quintuplet1 = let tp = tail primes; ttp = tail tp; tttp = tail ttp; ttttp = tail tttp in [(p1, p2, p3, p4, p5) | (p1, p2, p3, p4, p5) <- zip5 primes tp ttp tttp ttttp, p1 + 2 == p2, p2 + 4 == p3, p3 + 2 == p4, p4 + 4 == p5]
Prelude Data.Numbers.Primes Data.List> let quintuplet2 = let tp = tail primes; ttp = tail tp; tttp = tail ttp; ttttp = tail tttp in [(p1, p2, p3, p4, p5) | (p1, p2, p3, p4, p5) <- zip5 primes tp ttp tttp ttttp, p1 + 4 == p2, p2 + 2 == p3, p3 + 4 == p4, p4 + 2 == p5]

六つ子素数(prime sextuplet)

更に, 六つ子だってあります. 四つ子素数(p,p+2,p+6,p+8)で, 更にp-4, p+12が両方共素数であるような組(p-4, p, p+2, p+6, p+8, p+12)です. OEISのリスト http://oeis.org/A022008/b022008.txt の最後を見てみると, 50億とかなってて計算がヤバゲですね.

Prelude Data.Numbers.Primes> let sextuplet = [(p, p+4, p+6, p+10, p+12, p+16) | p <- primes, isPrime (p+4), isPrime (p+6), isPrime (p+10), isPrime (p+12), isPrime (p+16)]
Prelude Data.Numbers.Primes> take 10 sextuplet
[(7,11,13,17,19,23),(97,101,103,107,109,113),(16057,16061,16063,16067,16069,16073),(19417,19421,19423,19427,19429,19433),(43777,43781,43783,43787,43789,43793),(1091257,1091261,1091263,1091267,1091269,1091273),(1615837,1615841,1615843,1615847,1615849,1615853),(1954357,1954361,1954363,1954367,1954369,1954373),(2822707,2822711,2822713,2822717,2822719,2822723),(2839927,2839931,2839933,2839937,2839939,2839943)]

取り敢えず10個だけ... もうちょっと頑張って, 50番目は

Prelude Data.Numbers.Primes> sextuplet !! (50 - 1)
(41214067,41214071,41214073,41214077,41214079,41214083)

です. ここまで来ると, かなり計算がキツイなー...

それ以上のスーパー多胎児

六つ子素数(p-4,p,p+2,p+6,p+8,p+12)でした. では七つ子素数を考えてみましょう.
上に行って, p+14素数である場合を考えましょう. ところが, \mathrm{mod}\;5で考えると(p+1,p,p+2,p+1,p+3,p+2, p+4)となってしまい, 必ず一つの5の倍数を含んでしまいます. 素数で5の倍数というのは5だけですが, これがp-4であればp+6が5の倍数となってアウト, 5がpであればp-4素数じゃなくなってアウトなので, こういう七つ子はありません. 更に上に行って, p+16素数のケースでは, \mathrm{mod}\;3で考えると(p+2,p,p+2,p,p+2,p,p+1)となり, 今度は3の倍数が入ります. p-4=3であればp+2=9素数でないのでアウト, それ以外では3より小さな奇素数はないのでアウトです.
下に行って, p-6素数の場合は, やはり5の倍数を含みます. p-6=5とすると, (5, 7, 11, 13, 17, 19, 23)となり, これはなんと全て素数です. これ以外にはありません. p-8素数の場合は, 3の倍数が入ります. p-8=3とすると, (3, 7, 11, 13, 17, 19, 23)となり, これも全て素数です. やはりこれ以外にありません.
結局のところ, 七つ子として(5, 7, 11, 13, 17, 19, 23)(3, 7, 11, 13, 17, 19, 23)が出てきました. そして八つ子は(3, 5, 7, 11, 13, 17, 19, 23)のみ, そして差が4以下のこれ以上の素数組はないことが分かります.
八つ子から逆に七つ子を考えると, 八つ子の隣合う差は順に2,2,4,2,4,2,4となっています. 隣合う差が4以下と言う条件下では, 3を抜くか, 5を抜く以外に方法はありません... おっと, 23を抜く手がありますね. (3,5,7,11,13,17,19)は確かに隣合う差が4以下の七つ子となっています. しかし, これ以外の他の数を抜いてしまうと差が6のギャップが出てしまいます.

以上のことから七つ子以上の多胎児を考えてもあまり意味が無いということが分かります.

おっとっと, 2が素数であることを忘れていました!!! 失念失念. これを含むと, 七つ子も八つ子もうちょっとケースが増えますね... まぁ, いずれにせよ, こういう特殊なケースは七つ子とか八つ子とは定義しません. 考えても意味が無いからです.

いとこ素数(cousin prime)

これまでは, 「少なくとも差が2であるようなペアを含む」素数組でした. スーパー多胎児となってもこのルールは守っていました.
いとこ素数の組というのは, pp+4素数であるような素数(p,p+4)のことです*10.

Prelude Data.Numbers.Primes> let cousins = [(p, p+4) | p <- primes, isPrime (p+4)]
Prelude Data.Numbers.Primes> take 100 cousins
[(3,7),(7,11),(13,17),(19,23),(37,41),(43,47),(67,71),(79,83),(97,101),(103,107),(109,113),(127,131),(163,167),(193,197),(223,227),(229,233),(277,281),(307,311),(313,317),(349,353),(379,383),(397,401),(439,443),(457,461),(463,467),(487,491),(499,503),(613,617),(643,647),(673,677),(739,743),(757,761),(769,773),(823,827),(853,857),(859,863),(877,881),(883,887),(907,911),(937,941),(967,971),(1009,1013),(1087,1091),(1093,1097),(1213,1217),(1279,1283),(1297,1301),(1303,1307),(1423,1427),(1429,1433),(1447,1451),(1483,1487),(1489,1493),(1549,1553),(1567,1571),(1579,1583),(1597,1601),(1609,1613),(1663,1667),(1693,1697),(1783,1787),(1867,1871),(1873,1877),(1993,1997),(1999,2003),(2083,2087),(2137,2141),(2203,2207),(2239,2243),(2269,2273),(2293,2297),(2347,2351),(2377,2381),(2389,2393),(2437,2441),(2473,2477),(2539,2543),(2617,2621),(2659,2663),(2683,2687),(2689,2693),(2707,2711),(2749,2753),(2797,2801),(2833,2837),(2857,2861),(2953,2957),(3019,3023),(3037,3041),(3079,3083),(3163,3167),(3187,3191),(3217,3221),(3253,3257),(3319,3323),(3343,3347),(3457,3461),(3463,3467),(3529,3533),(3613,3617)]
Prelude Data.Numbers.Primes> cousins !! (1000 - 1)
(78889,78893)
Prelude Data.Numbers.Primes> cousins !! (5000 - 1)
(556723,556727)
Prelude Data.Numbers.Primes> cousins !! (10000 - 1)
(1266487,1266491)

答え合わせはOEIS http://oeis.org/A023200/b023200.txt でみてください.

これらの逆数の和も収束します. 先程の四つ組までの逆数和をB_4と書きます. なんと紛らわしいことに, 先程の四つ子素数の逆数和と同じ記号を使うようです. さらに, 最初の(3,7)を無視します.
B_4 = \;\sum_{p, p+4 : \mathrm{prime}, p \ge 7} \left(\frac 1 p + \frac 1 {p+4} \right)

Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 1000 (tail cousins)]
0.9631425282877135
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 10000 (tail cousins)]
1.0091560613412833
Prelude Data.Numbers.Primes> sum [1 / fromInteger p1 + 1 / fromInteger p2 | (p1, p2) <- take 100000 (tail cousins)]
1.0392400263807315

10万番目のいとこ達までをとっても, ホントの概算値1.1970449にはちょっと遠そうです*11. 10万番目は

Prelude Data.Numbers.Primes> cousins !! (100000 - 1)
(18466729,18466733)

となってます. 再度言いますが, 四つ子素数B_4と間違えないようにしましょう.

三人のいとこ素数の組はあるのでしょうか. (p, p+4, p+8)が全て素数なら, 少なくとも一つは3の倍数です. そういうのは(3, 7, 11)に限ります. よってこういうのを考えても意味がありません.

セクシー素数(sexy prime)

双子, いとこと来て, 最後はセクシーですっ 何がセクシーですかっ!!!
セクシー素数の組というのは, pp+6素数であるような素数(p,p+6)のことです*12.
別にセクシー何ではなく, 単純に差が6, six, これがsexyと言うの元となっています. ドキドキしちゃいますよね...

Prelude Data.Numbers.Primes> let sexyprimes = [(p, p+6) | p <- primes, isPrime (p+6)]
Prelude Data.Numbers.Primes> take 100 sexyprimes
[(5,11),(7,13),(11,17),(13,19),(17,23),(23,29),(31,37),(37,43),(41,47),(47,53),(53,59),(61,67),(67,73),(73,79),(83,89),(97,103),(101,107),(103,109),(107,113),(131,137),(151,157),(157,163),(167,173),(173,179),(191,197),(193,199),(223,229),(227,233),(233,239),(251,257),(257,263),(263,269),(271,277),(277,283),(307,313),(311,317),(331,337),(347,353),(353,359),(367,373),(373,379),(383,389),(433,439),(443,449),(457,463),(461,467),(503,509),(541,547),(557,563),(563,569),(571,577),(587,593),(593,599),(601,607),(607,613),(613,619),(641,647),(647,653),(653,659),(677,683),(727,733),(733,739),(751,757),(821,827),(823,829),(853,859),(857,863),(877,883),(881,887),(941,947),(947,953),(971,977),(977,983),(991,997),(1013,1019),(1033,1039),(1063,1069),(1087,1093),(1091,1097),(1097,1103),(1103,1109),(1117,1123),(1123,1129),(1181,1187),(1187,1193),(1217,1223),(1223,1229),(1231,1237),(1277,1283),(1283,1289),(1291,1297),(1297,1303),(1301,1307),(1321,1327),(1361,1367),(1367,1373),(1423,1429),(1427,1433),(1433,1439),(1447,1453)]
Prelude Data.Numbers.Primes> sexyprimes !! (1000 - 1)
(31793,31799)
Prelude Data.Numbers.Primes> sexyprimes !! (10000 - 1)
(554893,554899)

OEISのリストは http://oeis.org/A023201/b023201.txt になります.

セクシー素数の三つ組(sexy prime triplet)

(p, p+6, p+12)が全て素数であり, p+18が合成数あるような組(p, p+6, p+12)が, セクシー素数の三つ組です*13... ちょとまて!!! セクシー...三つ組...!!! 三人で何しちゃうんですかっ!!! (鼻血)

Prelude Data.Numbers.Primes> let sexytriplet = [(p, p+6, p+12) | p <- primes, isPrime (p+6), isPrime (p+12), not (isPrime (p+18))]
Prelude Data.Numbers.Primes> take 100 sexytriplet 
[(7,13,19),(17,23,29),(31,37,43),(47,53,59),(67,73,79),(97,103,109),(101,107,113),(151,157,163),(167,173,179),(227,233,239),(257,263,269),(271,277,283),(347,353,359),(367,373,379),(557,563,569),(587,593,599),(607,613,619),(647,653,659),(727,733,739),(941,947,953),(971,977,983),(1097,1103,1109),(1117,1123,1129),(1181,1187,1193),(1217,1223,1229),(1277,1283,1289),(1291,1297,1303),(1361,1367,1373),(1427,1433,1439),(1447,1453,1459),(1487,1493,1499),(1607,1613,1619),(1657,1663,1669),(1747,1753,1759),(1777,1783,1789),(1867,1873,1879),(1901,1907,1913),(1987,1993,1999),(2131,2137,2143),(2281,2287,2293),(2377,2383,2389),(2411,2417,2423),(2677,2683,2689),(2687,2693,2699),(2707,2713,2719),(2791,2797,2803),(2897,2903,2909),(2957,2963,2969),(3307,3313,3319),(3457,3463,3469),(3527,3533,3539),(3631,3637,3643),(3727,3733,3739),(3917,3923,3929),(4007,4013,4019),(4127,4133,4139),(4451,4457,4463),(4507,4513,4519),(4591,4597,4603),(4637,4643,4649),(4651,4657,4663),(4787,4793,4799),(4931,4937,4943),(4987,4993,4999),(5107,5113,5119),(5297,5303,5309),(5387,5393,5399),(5407,5413,5419),(5437,5443,5449),(5471,5477,5483),(5557,5563,5569),(5647,5653,5659),(5737,5743,5749),(5801,5807,5813),(6067,6073,6079),(6257,6263,6269),(6317,6323,6329),(6367,6373,6379),(6857,6863,6869),(6971,6977,6983),(7207,7213,7219),(7517,7523,7529),(7577,7583,7589),(7817,7823,7829),(7867,7873,7879),(8081,8087,8093),(8111,8117,8123),(8231,8237,8243),(8707,8713,8719),(8741,8747,8753),(9001,9007,9013),(9337,9343,9349),(9391,9397,9403),(9467,9473,9479),(10247,10253,10259),(10331,10337,10343),(10601,10607,10613),(10651,10657,10663),(10847,10853,10859),(11491,11497,11503)]
Prelude Data.Numbers.Primes> sexytriplet !! (100 - 1)
(11491,11497,11503)
Prelude Data.Numbers.Primes> sexytriplet !! (1000 - 1)
(289721,289727,289733)

http://oeis.org/A046118/b046118.txt 見てみると... 役に立たねぇ!!!

セクシー素数の四つ組(sexy prime quadruplet)

(p, p+6, p+12, p+18)が全て素数であるとき, セクシー素数の三つ組です*14. セクシー四つ組... 四つ組... どういう組み合わせなんだろう...

Prelude Data.Numbers.Primes> let sexyquadruplet = [(p, p+6, p+12, p+18) | p <- primes, isPrime (p+6), isPrime (p+12), isPrime (p+18)]
Prelude Data.Numbers.Primes> take 100 sexyquadruplet 
[(5,11,17,23),(11,17,23,29),(41,47,53,59),(61,67,73,79),(251,257,263,269),(601,607,613,619),(641,647,653,659),(1091,1097,1103,1109),(1481,1487,1493,1499),(1601,1607,1613,1619),(1741,1747,1753,1759),(1861,1867,1873,1879),(2371,2377,2383,2389),(2671,2677,2683,2689),(3301,3307,3313,3319),(3911,3917,3923,3929),(4001,4007,4013,4019),(5101,5107,5113,5119),(5381,5387,5393,5399),(5431,5437,5443,5449),(5641,5647,5653,5659),(6311,6317,6323,6329),(6361,6367,6373,6379),(9461,9467,9473,9479),(11821,11827,11833,11839),(12101,12107,12113,12119),(12641,12647,12653,12659),(13451,13457,13463,13469),(14621,14627,14633,14639),(14741,14747,14753,14759),(15791,15797,15803,15809),(15901,15907,15913,15919),(17471,17477,17483,17489),(18211,18217,18223,18229),(19471,19477,19483,19489),(20341,20347,20353,20359),(21481,21487,21493,21499),(23321,23327,23333,23339),(24091,24097,24103,24109),(26171,26177,26183,26189),(26681,26687,26693,26699),(26711,26717,26723,26729),(30091,30097,30103,30109),(30631,30637,30643,30649),(32051,32057,32063,32069),(37561,37567,37573,37579),(41941,41947,41953,41959),(42391,42397,42403,42409),(44531,44537,44543,44549),(50581,50587,50593,50599),(53611,53617,53623,53629),(55201,55207,55213,55219),(56081,56087,56093,56099),(62201,62207,62213,62219),(63691,63697,63703,63709),(65701,65707,65713,65719),(68891,68897,68903,68909),(69991,69997,70003,70009),(71341,71347,71353,71359),(75521,75527,75533,75539),(77551,77557,77563,77569),(78791,78797,78803,78809),(79811,79817,79823,79829),(80911,80917,80923,80929),(82781,82787,82793,82799),(83431,83437,83443,83449),(84431,84437,84443,84449),(87541,87547,87553,87559),(88801,88807,88813,88819),(89101,89107,89113,89119),(89381,89387,89393,89399),(91291,91297,91303,91309),(94421,94427,94433,94439),(95261,95267,95273,95279),(95911,95917,95923,95929),(103991,103997,104003,104009),(104711,104717,104723,104729),(105361,105367,105373,105379),(105601,105607,105613,105619),(108631,108637,108643,108649),(110921,110927,110933,110939),(112571,112577,112583,112589),(115751,115757,115763,115769),(119551,119557,119563,119569),(120551,120557,120563,120569),(120811,120817,120823,120829),(121001,121007,121013,121019),(122021,122027,122033,122039),(124291,124297,124303,124309),(125101,125107,125113,125119),(126481,126487,126493,126499),(130681,130687,130693,130699),(139291,139297,139303,139309),(141061,141067,141073,141079),(144241,144247,144253,144259),(152941,152947,152953,152959),(154061,154067,154073,154079),(162251,162257,162263,162269),(163841,163847,163853,163859),(165701,165707,165713,165719)]
Prelude Data.Numbers.Primes> sexyquadruplet !! (100 - 1)
(165701,165707,165713,165719)
Prelude Data.Numbers.Primes> sexyquadruplet !! (1000 - 1)
(4957091,4957097,4957103,4957109)


セクシー素数の五つ組はあるんでしょうか. (p, p+6, p+12, p+18, p+24)ですが, \mathrm{mod}\;5で考えると, (p, p+1, p+2, p+3, p+4)となり, 必ず一つは5の倍数となります. p=5の時の(5, 11, 17, 23, 29)はなんと全て素数です. これ以外にこういう五つ組はありません. これ以上の六つ組以上はありません.

まとめ

一般に, こういう風に差の決まった素数の組をprime k-tupleと言います*15. 双子素数(p, p+2)は, pを省略して(0, 2)と表記します. ここにまとめておきましょう. kはタプルの大きさ, sは最大と最小の数の差です.

k s (a, b, ...) 名前 最初の10個
2 2 (0,2) 双子素数(twin prime) (3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61),(71,73),(101,103),(107,109)
3 6 (0,2,6) 三つ子素数(prime triplet) (5,7,11),(11,13,17),(17,19,23),(41,43,47),(101,103,107),(107,109,113),(191,193,197),(227,229,233),(311,313,317),(347,349,353)
3 6 (0,4,6) 三つ子素数(prime triplet) (7,11,13),(13,17,19),(37,41,43),(67,71,73),(97,101,103),(103,107,109),(193,197,199),(223,227,229),(277,281,283),(307,311,313)
4 8 (0,2,6,8) 四つ子素数(prime quadruplet) (5,7,11,13),(11,13,17,19),(101,103,107,109),(191,193,197,199),(821,823,827,829),(1481,1483,1487,1489),(1871,1873,1877,1879),(2081,2083,2087,2089),(3251,3253,3257,3259),(3461,3463,3467,3469)
5 12 (0,2,6,8,12) 五つ子素数(prime quintuplet) (5,7,11,13,17),(11,13,17,19,23),(101,103,107,109,113),(1481,1483,1487,1489,1493),(16061,16063,16067,16069,16073),(19421,19423,19427,19429,19433),(21011,21013,21017,21019,21023),(22271,22273,22277,22279,22283),(43781,43783,43787,43789,43793),(55331,55333,55337,55339,55343)
5 12 (0,4,6,10,12) 五つ子素数(prime quintuplet) (7,11,13,17,19),(97,101,103,107,109),(1867,1871,1873,1877,1879),(3457,3461,3463,3467,3469),(5647,5651,5653,5657,5659),(15727,15731,15733,15737,15739),(16057,16061,16063,16067,16069),(19417,19421,19423,19427,19429),(43777,43781,43783,43787,43789),(79687,79691,79693,79697,79699)
6 16 (0,4,6,10,12,16) 六つ子素数(prime sextuplet) (7,11,13,17,19,23),(97,101,103,107,109,113),(16057,16061,16063,16067,16069,16073),(19417,19421,19423,19427,19429,19433),(43777,43781,43783,43787,43789,43793),(1091257,1091261,1091263,1091267,1091269,1091273),(1615837,1615841,1615843,1615847,1615849,1615853),(1954357,1954361,1954363,1954367,1954369,1954373),(2822707,2822711,2822713,2822717,2822719,2822723),(2839927,2839931,2839933,2839937,2839939,2839943)
2 4 (0,4) いとこ素数(cousin prime) (3,7),(7,11),(13,17),(19,23),(37,41),(43,47),(67,71),(79,83),(97,101),(103,107)
2 6 (0,6) セクシー素数(sexy prime) (5,11),(7,13),(11,17),(13,19),(17,23),(23,29),(31,37),(37,43),(41,47),(47,53)
3 12 (0,6,12) セクシー素数の三つ組(sexy prime triplet) (7,13,19),(17,23,29),(31,37,43),(47,53,59),(67,73,79),(97,103,109),(101,107,113),(151,157,163),(167,173,179),(227,233,239)
4 18 (0,6,12,18) セクシー素数の四つ組(sexy prime quadruplet) (5,11,17,23),(11,17,23,29),(41,47,53,59),(61,67,73,79),(251,257,263,269),(601,607,613,619),(641,647,653,659),(1091,1097,1103,1109),(1481,1487,1493,1499),(1601,1607,1613,1619)


だんだんおんなじ作業になってきて飽きてくるんですが, 大体名前の付いてる素数の組はこれで終わりだと思います. これらは, 無限個あるかどうかすら証明されていない不思議な組たちです. 多くの数学者は無限個あると予想していますが.

素数には魅力がいっぱいです. 今回は双子素数, 三つ子素数..., そしていとこ素数とセクシー素数を見てきました. 計算するのは簡単なのですが, 数学的に難しい問題を孕んでいます. 素数楽しいよっ♪



この記事はNumberphileに発想を得て書きました(Sexy Primes - Video - Numberphile - Videos about Numbers and Stuff).