素数, primes.
数学者を魅了してやまない数たち.
その中でも, 特徴のある素数たちがいます. 双子素数, 三つ子素数, 四つ子素数, いとこ素数, セクシー素数,.... 何がセクシーなんでしょうか? 気になります!!! 順番に計算しつつ見ていきましょう.
今回もHaskellのprimesパッケージ*1を用いてみます. 自分で実装するのより高速であろうことを期待して.
Prelude> :m Data.Numbers.Primes Prelude Data.Numbers.Primes>
素数の数
素数は, 無限個あります. もしそうでなければ, これほどの魅力はなかったことでしょう. 素数が無限個あることの証明は, あのユークリッドの証明が有名ですが, 次のような証明もあります.
リーマンゼータ関数は,
となっています. ところでは無理数でです. 仮に素数が有限個しかなければは有理数となるはずなので, 素数は無限個あります.
つまり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>で止めてくださいね.
次に, 素数の逆数和を考えてみましょう.
実は, この値は発散することが知られています*2. 逆数和が発散するため, 素数が無限個あるという言い方もできます(素数が無限個あることと独立に証明することが出来るため. ここではそれはしません). 少し証明しましょう. 任意の正の実数について, が成り立ちます. よって
となりますが, 整数の逆数の和は発散するので, は発散します. 更に, 番目の素数に対して, が成り立ちます. よって
となりますが, も発散するので, は発散します.
しかし, この発散はとても緩やかなので, 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の素数のペアということになります.
このことから直ぐ分かるように, 差が奇数()であるような素数のペアというのは, が素数であるときのの, せいぜい一つに限ります. つまりあまり面白い事はありそうにありません.
面白いのは, 差が偶数であるような素数のペアを考えることです. 例えば差が2であるような素数のペア, 差が4であるような素数のペア... みたいに. こうなると途端に, 様々な不思議なことが起こるから面白いのです.
双子素数(twin prime)
差が2であるような素数のペア, これを双子素数といいます*3. 正確に言うと, twin primeといった場合は, またはが素数であるような素数の事を言い, twin primesといった場合はそういうペアを言うそうです. ともかく素数を下から数えていくと,
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)を考えなければ, 最小の素数ギャップです. と言うことは, 必ず双子素数は素数列の中で隣り合っています. つまり双子素数のペアがあった時に, それらの間にみたいに入り込むような素数はありえません. ならば, 最初に隣合う素数のペアを作りましょう.
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の最後と同じものであることが確かめられます.
双子素数は無限個あるのでしょうか. なんと, これは数学上の未解決問題の一つとなっています!!! 今の段階では, だれもこの問にきちんと答えることが出来ないのです. こんなことさえ数学者は分からないのか, という気分になりますよね...
では, 双子素数の逆数の和は発散するのでしょうか. 驚くべきことに, これは収束することが知られていています. この収束先
はブルンの定数と呼ばれ, およそ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にすら届いていません. 現在ではまでの双子素数からブルンの定数は計算されています. (私が行った計算は, たったの程度に過ぎません!)
双子素数の逆数和が収束するからと言って, 双子素数が有限個とは限りません. ブルンの定数は有理数か無理数かすら分かっていません. もし無理数であることが分かったというならば, それは双子素数が無限個あるということになるはずです. ところが, ブルンの定数が有理数であることが分かったとしても, 双子素数が有限個であるということにはなりません(たぶん...直感的にはこうですが, なにか私の知らない命題があるのかも.).
双子素数についてはこれくらいにしておきましょう. まだまだ紹介したいことがいっぱいあるからです.
三つ子素数(prime triplet)
赤ちゃんが二人生まれるのが双子ならば, 三人生まれるのが三つ子です. 素数にも三つ子というのがあります.
双子素数のペアというのは, とが素数であるようなのことでした. ではととが素数であるようなはあるのでしょうか. 実はそういうペアは(3, 5, 7)しかないということが分かります. なぜなら, はではとなり, 必ず3の倍数が一つだけ含みます. 3の倍数でかつ素数であるのは3のみであり, 3以下の奇数の素数はない, 上を見てみると5も7も素数, よってこういうペアは(3, 5, 7)のみということです.
実は, 三つ子素数はこういうのを言うのではありません. ケースが少ないことが自明なものに名前をつけて考えてもしょうが無いからです. 三つ子素数の組というのは, 素数組またはの事を言います*6. 差が4となることの注意しましょう. 今後, スーパー多胎児が出てきますが, 差が6となると流石に差が開き過ぎなので, この「差がせいぜい4」というのを重要視することにします.
まずはのケースを考えましょう. 先程と同様に, とは隣り合った素数です. 更に, が素数であるのはの時のみ(しかもは素数ではない!)ので, 結局この三つ組は隣り合った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)
はい, 合ってますね.
のケースも調べてみます. 先程と同様に, が素数であることはありませんので, やはりこれら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)
三つ子素数があるならば四つ子素数もあります. 四つ子素数の組というのは, 素数組の事を言います*7. やはり先程の論法で, は抜いています.
すぐに分かるように, 四つ子素数の組は三つ子素数を含み, 更に双子素数も含みます.
街中で四つ子のうちの二人を連れていて, 「あら奥様, 双子ですか?」 「いいえ, 四つ子うちの三番目と一番下の子ですのよ. オホホ...」 「あらまぁ!!!」みたいな感じですね.
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)
ほいほい 合ってます♪
やはり四つ組素数も無限個あるのか分かっていません. もし四つ組素数が無限個あるのが分かっているならば, 双子素数だって無限個あるのです.
四つ子素数の逆数の和
は収束することが知られています. その値はおよそ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)
四つ子があるなら五つ子もあります. 四つ子素数はでした. さらにが素数であるケースはを除いてありません. なぜなら, これを足した五つ子は必ず3の倍数を含むからです. よって五つ子素数はを考えます. 或いは, のケースも五つ子素数として考えます. この2つは, (三つ子素数が二種類あったように)全く別々のケースです. 型と型として, それぞれ見ていきます*9. まずは型から.
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番目の型五つ子素数は http://oeis.org/A022006/b022006.txt を見ると合ってますね.
型も見てみます.
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)
更に, 六つ子だってあります. 四つ子素数で, 更にが両方共素数であるような組です. 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)
です. ここまで来ると, かなり計算がキツイなー...
それ以上のスーパー多胎児
六つ子素数はでした. では七つ子素数を考えてみましょう.
上に行って, が素数である場合を考えましょう. ところが, で考えるととなってしまい, 必ず一つの5の倍数を含んでしまいます. 素数で5の倍数というのは5だけですが, これがであればが5の倍数となってアウト, 5がであればが素数じゃなくなってアウトなので, こういう七つ子はありません. 更に上に行って, が素数のケースでは, で考えるととなり, 今度は3の倍数が入ります. であればが素数でないのでアウト, それ以外では3より小さな奇素数はないのでアウトです.
下に行って, が素数の場合は, やはり5の倍数を含みます. とすると, となり, これはなんと全て素数です. これ以外にはありません. が素数の場合は, 3の倍数が入ります. とすると, となり, これも全て素数です. やはりこれ以外にありません.
結局のところ, 七つ子としてとが出てきました. そして八つ子はのみ, そして差が4以下のこれ以上の素数組はないことが分かります.
八つ子から逆に七つ子を考えると, 八つ子の隣合う差は順にとなっています. 隣合う差が4以下と言う条件下では, 3を抜くか, 5を抜く以外に方法はありません... おっと, 23を抜く手がありますね. は確かに隣合う差が4以下の七つ子となっています. しかし, これ以外の他の数を抜いてしまうと差が6のギャップが出てしまいます.
以上のことから七つ子以上の多胎児を考えてもあまり意味が無いということが分かります.
おっとっと, 2が素数であることを忘れていました!!! 失念失念. これを含むと, 七つ子も八つ子もうちょっとケースが増えますね... まぁ, いずれにせよ, こういう特殊なケースは七つ子とか八つ子とは定義しません. 考えても意味が無いからです.
いとこ素数(cousin prime)
これまでは, 「少なくとも差が2であるようなペアを含む」素数組でした. スーパー多胎児となってもこのルールは守っていました.
いとこ素数の組というのは, もも素数であるような素数組のことです*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 でみてください.
これらの逆数の和も収束します. 先程の四つ組までの逆数和をと書きます. なんと紛らわしいことに, 先程の四つ子素数の逆数和と同じ記号を使うようです. さらに, 最初の(3,7)を無視します.
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)
となってます. 再度言いますが, 四つ子素数のと間違えないようにしましょう.
三人のいとこ素数の組はあるのでしょうか. が全て素数なら, 少なくとも一つは3の倍数です. そういうのは(3, 7, 11)に限ります. よってこういうのを考えても意味がありません.
セクシー素数(sexy prime)
双子, いとこと来て, 最後はセクシーですっ 何がセクシーですかっ!!!
セクシー素数の組というのは, もも素数であるような素数組のことです*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)
が全て素数であり, が合成数あるような組が, セクシー素数の三つ組です*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)
が全て素数であるとき, セクシー素数の三つ組です*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)
セクシー素数の五つ組はあるんでしょうか. ですが, で考えると, となり, 必ず一つは5の倍数となります. の時のはなんと全て素数です. これ以外にこういう五つ組はありません. これ以上の六つ組以上はありません.
まとめ
一般に, こういう風に差の決まった素数の組をprime k-tupleと言います*15. 双子素数は, を省略してと表記します. ここにまとめておきましょう. 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).
*1:The primes package http://hackage.haskell.org/package/primes
*2:Divergence of the sum of the reciprocals of the primes - Wikipedia, the free encyclopedia
*3:双子素数 - Wikipedia Twin prime - Wikipedia, the free encyclopedia Twin Primes -- from Wolfram MathWorld A077800 - OEIS A001359 - OEIS A006512 - OEIS A014574 - OEIS
*4:http://arnflo.se/~site_files/Other/twinprimes
*5:ブルン定数 - Wikipedia Brun's theorem - Wikipedia, the free encyclopedia Brun's Constant -- from Wolfram MathWorld A065421 - OEIS
*6:三つ子素数 - Wikipedia Prime triplet - Wikipedia, the free encyclopedia Prime Triplet -- from Wolfram MathWorld A007529 - OEIS A022004 - OEIS A022005 - OEIS
*7:四つ子素数 - Wikipedia Prime quadruplet - Wikipedia, the free encyclopedia Prime Quadruplet -- from Wolfram MathWorld A007530 - OEIS A007530 - OEIS
*8:Prime quadruplet - Wikipedia, the free encyclopedia
*9:A022006 - OEIS A022007 - OEIS
*10:いとこ素数 - Wikipedia Cousin prime - Wikipedia, the free encyclopedia Cousin Primes -- from Wolfram MathWorld A023200 - OEIS A046132 - OEIS
*11:http://www.ift.uni.wroc.pl/~mwolf/twins_ps.ps
*12:セクシー素数 - Wikipedia Sexy prime - Wikipedia, the free encyclopedia Sexy Primes -- from Wolfram MathWorld A023201 - OEIS A046117 - OEIS