输入两个整数m和n,输出m和n之间的所有素数。 其中 0<m<n<109。 输入格式 两个整数,用空格隔开,分别代表 m,n。
时间: 2024-12-04 07:24:51 浏览: 11
这是一个经典的算法问题,通常用于练习基本的数学和程序设计技巧。要在Python中编写一个程序来找出给定范围内的所有素数,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)。以下是简化的步骤:
1. 创建一个布尔数组isPrime大小为`n+1`,并将所有元素初始化为True,表示它们都是素数。
2. 遍历从2到sqrt(n),如果当前数isPrime[i]为True,说明它是一个素数,那么将它的倍数标记为非素数(isPrime[j*i]设为False,j从2开始)。
3. 遍历`m`到`n`(包括`m`),如果`isPrime[i]`为True,则i是一个素数,将其打印出来。
下面是一个简单的Python实现:
```python
import math
def print_primes(m, n):
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(math.sqrt(n)) + 1):
if is_prime[i]:
for j in range(i * i, n + 1, i):
is_prime[j] = False
for num in range(m, n + 1):
if is_prime[num]:
print(num)
# 示例
print_primes(2, 20) # 输出: 2, 3, 5, 7, 11, 13, 17, 19
```
阅读全文