编写一个程序,接受两个整数 m 和 n 作为输入,然后输出从 m 到 n 范围内的所有素数,并按照升序排列。能否提供这个算法或代码实现?
时间: 2024-10-22 07:26:34 浏览: 33
biancheng.rar_M?n
当编写一个程序来找出并打印从m到n范围内的所有素数时,可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)这种经典算法。以下是Python的一个简单实现:
```python
def sieve_of_eratosthenes(m, n):
primes = [True] * (n + 1) # 初始化一个布尔数组表示所有数字都是质数
primes[0], primes[1] = False, False # 0和1不是质数
for i in range(2, int(n ** 0.5) + 1): # 遍历到根号n,因为大于该值的因子肯定已经在之前遍历过了
if primes[i]: # 如果i是质数
for j in range(i*i, n+1, i): # 将i的倍数标记为合数
primes[j] = False
# 打印m到n之间的所有素数
for num in range(max(m, 2), n+1):
if primes[num]:
print(num)
# 示例
sieve_of_eratosthenes(10, 30)
```
这个程序首先创建一个布尔数组表示每个数字是否是质数。接着,它通过筛选将非质数标记出来,最后只输出那些被标记为质数的数字。
阅读全文