6.11
def sieve_of_eratosthenes(n):
"""
埃拉托斯特尼筛法,求[2, n]范围内的所有素数
:param n: 筛法的上界
:return: 布尔数组,is_prime[i]为True表示i是素数
"""
# 初始化:假设所有数都是素数
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False # 0和1不是素数
# 从2开始,筛去每个素数的倍数
for i in range(2, int(n ** 0.5) + 1):
if is_prime[i]:
# 标记i的倍数为非素数
for j in range(i * i, n + 1, i):
is_prime[j] = False
return is_prime
if name == "main":
# 输入n和m
n, m = map(int, input().split())
# 用筛法求出[2, m]内的所有素数
is_prime = sieve_of_eratosthenes(m)
# 筛选出[n, m]内的素数
primes = [i for i in range(n, m + 1) if is_prime[i]]
按格式输出:一行5个,每个占5位右对齐
for idx, prime in enumerate(primes):
print(f"{prime:5d}", end="")
# 每5个换一行
if (idx + 1) % 5 == 0:
print()
# 最后一行不足5个时,补一个换行
if len(primes) % 5 != 0:
print()

浙公网安备 33010602011771号