« PHPで素数判定 | メイン | scriptaculous.js+Ajaxが楽しい件 »

LL Ringのチケットを買ったのとPythonで1000000までの素数探索

LL Ringのチケットを買いました。祝4年連続!

LL Saturdayは徹夜仕事明けで台風の中を行ったなぁ。
LL WeekendやLL Day & Nightはそれほど遠い気がしない。LL Saturdayだけが遥か彼方にあります。
いまもそれなりにダメダメだけど、あのころの自分はかなりダメダメだった。(遠い目)


さて、また素数。
ホームディレクトリの下を漁っていたら、以下のようなPythonのコードをみつけました。


def primes(n):
if n == 2 : return [2]
elif n < 2 : return []
s=range(3, n+2, 2)
mroot = n ** 0.5
half = (n+1)/2
i=0
m=3
while m <= mroot:
if s[i]:
j = (m*m-3)/2
s[j] = 0
while j<half:
s[j]=0
j+=m
i=i+1
m=2*i+3
return [2] + [x for x in s if x]

print primes(1000000)


元はオライリーネットに投稿されていたものです。
いまだにこんなコードがかけません。 orz...





トラックバック

このエントリーのトラックバックURL:
http://catbot.net/MTOS4/mt-tb.cgi/65