python印刷素数
2539 ワード
素数を計算する方法の1つは、非常に簡単に理解されているエーストふるい法です.
まず、2から始まるすべての自然数をリストし、シーケンスを構築します.
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
シーケンスの最初の数2を取って、それはきっと素数で、それから2でシーケンスの2の倍数をふるい落とします:
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
新しいシーケンスの最初の数3を取って、それはきっと素数で、それから3でシーケンスの3の倍数をふるい落とします:
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
新しいシーケンスの最初の数5を取り、シーケンスの5の倍数を5でふるい落とす.
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
ふるい続けると、すべての素数が得られます.
まず、3から始まる奇数シーケンスを構築することができます(偶数は素数ではありません).
code:
参考サイト
まず、2から始まるすべての自然数をリストし、シーケンスを構築します.
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
シーケンスの最初の数2を取って、それはきっと素数で、それから2でシーケンスの2の倍数をふるい落とします:
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
新しいシーケンスの最初の数3を取って、それはきっと素数で、それから3でシーケンスの3の倍数をふるい落とします:
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
新しいシーケンスの最初の数5を取り、シーケンスの5の倍数を5でふるい落とす.
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …
ふるい続けると、すべての素数が得られます.
まず、3から始まる奇数シーケンスを構築することができます(偶数は素数ではありません).
code:
# -*- coding: utf-8 -*-
def main():
for n in primes():
if n < 100:
print(n)
else:
break
def odd_iter():
n = 1
while True:
n = n + 2
yield n
def is_prime(number):
return lambda x : x % number > 0
def primes():
yield 2
iter = odd_iter()
#print((iter), end = ' ')
while True:
number = next(iter)
#print(number, end = ' ')
yield number
iter = filter(is_prime(number), iter)
if __name__ == '__main__':
main()
参考サイト