素数砂漠

 自然数は、1と素数合成数(1とその数自身以外の約数を持つ数)から構成され、数が大きくなるにつれ、ある素数と次の素数までの間隔は大きくなるようです。そしてこの素数が存在しない区間は、任意の長さ(100万でも10億でも!)のものがあり、素数砂漠と呼ばれているのだそうです。
 そんな素数砂漠に行ってみたいと思いました。
wikipedia:自然数 wikipedia:素数 wikipedia:合成数

ゼロから無限へ―数論の世界を訪ねて (ブルーバックス)

ゼロから無限へ―数論の世界を訪ねて (ブルーバックス)



プログラム

#!/usr/bin/env python

import sys
import math

if len(sys.argv) < 2 or sys.argv[1] < 2:
  sys.stderr.write("Usage: " + sys.argv[0] + " number (number > 2)\n")
  sys.exit(1)

i = int(sys.argv[1])

while 1:

  is_composite_number = 0

  j = math.floor( i / 2 )
  while is_composite_number == 0 and j > 1:
    if (i % j) == 0:
      is_composite_number = 1
    j -= 1

  if is_composite_number == 1:
    print "."
  else:
    print i

  i += 1

あってるだろうか..


実行してみる

$ ./prime_number.py 2 | more
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
.
[Ctrl+C]

107まではあってる!


見どころ
◇双子素数 wikipedia:双子素数

.
.
11
.
13
.
.
.

三つ子素数 wikipedia:三つ子素数

.
1087
.
.
.
1091
.
1093
.

◇四つ子素数 wikipedia:四つ子素数

.
.
79691
.
79693
.
.
.
79697
.
79699
.
.



素数砂漠までは遠い

.
.
137957
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
137983
.
.
.
.
.
.
.
.
.
137993
.
.
.
.
.
137999
.
.
.
.
.
.
.
138007
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
138041
.