假设输入是两个整数,每个占一行,表示数据范围m和n,请你输出该范围内所有的素数,输出结果中两个数据之间用一个空格分割。程序不能保证第一个数小于第二个数。区间内没有素数时输出:no prime 输入: 10 19 输出: 11 13 17 19 用python写这个程序
时间: 2024-09-21 11:06:33 浏览: 41
你可以使用Python编写一个简单的函数来解决这个问题,利用Sieve of Eratosthenes算法找到给定范围内的素数。以下是实现这个功能的代码:
```python
def sieve_of_eratosthenes(m, n):
# 创建一个布尔列表,所有初始值设为True
primes = [True] * (n + 1)
primes[0], primes[1] = False, False # 0和1不是素数
# 根据素数筛法,从2开始,将2的倍数标记为非素数
for i in range(2, int(n**0.5) + 1):
if primes[i]:
for j in range(i*i, n + 1, i):
primes[j] = False
# 输出指定范围内的素数
result = []
for i in range(m, n + 1):
if primes[i]:
result.append(str(i))
# 如果没有素数,返回"no prime"
if not result:
return "no prime"
else:
return ' '.join(result)
# 示例输入
m = 10
n = 19
output = sieve_of_eratosthenes(m, n)
print(output)
```
当你运行这段代码,它会计算并打印出10到19之间的素数,如果不存在素数,则显示"No prime"。
阅读全文