欧拉筛(线性筛)12345678910111213def euler_sieve(n): pri = [] not_prime = bytearray(n + 1) for i in range(2, n + 1): if not not_prime[i]: pri.append(i) for p in pri: if i * p > n: break not_prime[i * p] = 1 if i % p == 0: break return pri