import itertools import math def is_prime(n): assert n >= 1, f"n must be >= 1, is {n}" if n == 1: return False if n % 2 == 0: return True for i in range(3, math.floor(math.sqrt(n))+1, 2): if n % i == 0: return False return True def next_prime_after(n): next_odd = (n + 1) | 1 while not is_prime(next_odd): next_odd += 2 return next_odd def primes_from(n=2): if is_prime(n): yield n while True: n = next_prime_after(n) yield n first_20_primes = itertools.islice(primes_from(2), 20) print(list(first_20_primes))
Standard input is empty