2024.5.15
8-7 【Python0008】筛法求素数
分数 10
作者 doublebest
单位 石家庄铁道大学
【题目描述】用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】在一行中输入整数n和m,数据间以空格为间隔。
【输出格式】按照一行5个的格式输出[n,m]范围内的所有素数,其中每个素数的显示格式为:占5位,右对齐。
【输入样例】50 100
【输出样例】 53 59 61 67 71
73 79 83 89 97
def sieve_of_eratosthenes(n, m):
# 创建一个列表用于标记是否为素数,初始全部置为True
is_prime = [True] * (m + 1)
# 0和1不是素数,将其标记为False
is_prime[0] = is_prime[1] = False
# 使用筛法求素数
for i in range(2, int(m ** 0.5) + 1):
if is_prime[i]:
# 将i的倍数标记为非素数
for j in range(i * i, m + 1, i):
is_prime[j] = False
# 输出[n, m]范围内的素数,每行5个素数
count = 0
for num in range(n, m + 1):
if is_prime[num]:
# 将素数格式化为占5位,右对齐
print(f"{num:5}", end=' ')
count += 1
# 每行输出5个素数后换行
if count % 5 == 0:
print()
# 输入整数n和m
n, m = map(int, input().split())
# 输出[n, m]范围内的所有素数
sieve_of_eratosthenes(n, m)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通