せっかくだから素数数えとくか

決して落ち着きを取り戻すためにやってるわけではない*1キミならどう書く 2.0 - ROUND 1 -ネタ.

Otsuneのなんでこれで素数判定できるかは、読者の宿題のエラトステネスのふるいがステキだったのでうちもふるいを使いたいと思った.で,せっかくだから一気にふるいをかけるためにPythonの集合演算を使ってみたよ.

def get_non_prime(n): # 100以下のnの倍数の集合を得る
  non_prime = []
  m = n * 2
  while (m < 100):
    non_prime.append(m)
    m += n
  return set(non_prime) 

non_primes = set() # 非素数の集合
for i in range(2,100):
  non_primes |= get_non_prime(i) # ORをとる

primes = set(range(2,100)) - non_primes # 一気にふるいにかける
print primes

処理がset()に隠蔽されてるだけで中身はほかのエラトステネスのふるいでやったのと対してかわんなそうだけどなー.

ちなみに,なにも考えずにPerlで書いたものすごい普通のができちゃった.

*1:プッチ神父参照