素数判断需先排除n≤1,n==2返回True,偶数>2返回False,再用for循环从3到√n+1(含)试除奇数;遍历范围时跳过

用循环输出指定范围内的素数,核心是判断每个数是否为素数,再用循环遍历范围并筛选输出。关键在于素数判定逻辑要高效且正确:素数是大于1的自然数,且除了1和它本身外不能被其他正整数整除。
先写一个可靠的素数判断函数
单独封装判断逻辑,便于复用和调试。对每个待测数 n,只需检查从 2 到 √n(含)之间的整数能否整除它:
- 若 n ≤ 1,直接返回 False(不是素数)
- 若 n == 2,返回 True(唯一偶素数)
- 若 n 是大于2的偶数,返回 False
- 否则,用 for 循环从 3 开始,只试奇数,到 int(n**0.5) + 1 为止
用 for 循环遍历指定范围
假设范围是 [start, end](闭区间),用 for i in range(start, end + 1) 逐个检查:
- 注意 start 可能小于2,需跳过小于2的数(素数定义要求 > 1)
- 每轮调用素数判断函数,为 True 就 print(i) 或存入列表统一输出
- 例如:输出 10 到 30 之间的素数,就 range(10, 31)
优化小技巧(避免常见错误)
初学者常在这里出错:
- 误把 1 当作素数 → 判定函数开头必须排除 n ≤ 1
- √n 取整不加 1 导致漏判(如 25 的因子 5,range(2, int(25**0.5)) 是 range(2,5),不含5)→ 应写成 range(2, int(n**0.5) + 1)
- 对每个数都从 2 试到 n−1,效率极低 → 一定要用 √n 优化
- range 起始值设错,比如想输出 100 以内(
完整可运行示例(Python)
以下代码输出 2 到 50 之间的所有素数:
def is_prime(n):
if n for num in range(2, 51):
if is_prime(num):
print(num, end=' ')输出:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47










