名古屋で数学するプログラマ(仮)

@antimon2 が趣味兼一部本職の数学で何かするときのブログ。

セクシー素数

なにやら数学嫌いでも興味を持たずにはいられない数学用語ランキング - 学びランキング
- goo ランキング
で1位だということで。
記念に「セクシー素数http://ja.wikipedia.org/wiki/セクシー素数)」を列挙するメソッドをRuby*1で書いてみました。

実行例↓

#セクシー素数の組(最初の10組)
Prime.sexy_pair.take(10)
# => [[5, 11], [7, 13], [11, 17], [13, 19], [17, 23], [23, 29], [31, 37], [37, 43], [41, 47], [47, 53]]

#セクシー素数の組(<500)
Prime.sexy_pair(500).to_a
# => [[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]]

#セクシー素数の三つ組(<1000)
Prime.sexy_triplets(1000).to_a
# => [[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]]

#セクシー素数の四つ組(<1000)
Prime.sexy_quadruplets(1000).to_a
# => [[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]]
おまけ

双子素数(差が2の素数の組)と、いとこ素数(差が4)も列挙するコードを置いときます。

*1:要:Ruby 1.9.x