見出し画像

クレメントの双子素数判定法

双子素数と三つ子素数について、調べてみました。思いのほか興味深いテーマが出てきました。

詳しくは Pythonで双子素数を計算する

クレメントの双子素数判定法というものがあります。正の整数𝑛に対して4((𝑛−1)!+1)+𝑛が𝑛(𝑛+2)で割り切れるとき(𝑛,𝑛+2)は双子素数であり、逆も成り立つ。

にわかに信じられないのでプログラムを作成します。

fact = 1
twin_c = []
for n in range(2, 1000):
   fact *= n-1
   num = (fact+1)*4+n
   if num % (n*(n+2)) == 0:
       twin_c.append((n, n+2))

twin_c 

[(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)]

1000までの双子素数が過不足なく表示されます。本当に、不思議です。

この記事が気に入ったらサポートをしてみませんか?