2009/05/11

python 内包

「1以上100未満の『2個の素数の積』である整数を列挙しなさい」
はい!
で、エラトステネスの篩が速い! ということでオレなりの篩
素数のリストを作ったものの積取った集合が作れない!
ので調べたら分かって完成
from math import sqrt

N=100
composite = {}
primes = []

for i in xrange(2, int(sqrt(N))+1):
if not composite.get(i):
for j in xrange(2,N/i+1):
composite[i*j] = 1
primes.append(i)

result = [x * y for x in primes for y in primes if x < y and x * y < N]
result.sort()
print result
set とか使って difference 取った方が良い気がしてきたけど
まぁいいや

あぁ、素数を作りすぎているよなぁ...

0 件のコメント:

コメントを投稿