Python多种方法实现打印m到n范围以内的素数。(要求:要有异常处理,一行只能输出8个)
时间: 2024-02-19 15:03:07 浏览: 129
好的,我可以为您提供多种Python实现方法,满足您的要求:
方法一:使用函数和异常处理
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
try:
m, n = map(int, input("请输入范围m和n:").split())
count = 0
for num in range(m, n+1):
if is_prime(num):
print(num, end=' ')
count += 1
if count % 8 == 0:
print()
except ValueError:
print("输入格式错误,请输入正确的数字范围!")
```
这里我们同样定义了一个`is_prime`函数来判断一个数是否为素数,然后使用`try-except`语句来处理输入格式错误的异常。如果输入格式错误,我们输出提示信息。否则,我们遍历这个范围内的每一个数,如果是素数则输出。同时,我们使用`count`来计数,每输出8个素数就换行。
方法二:使用列表推导式和异常处理
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
try:
m, n = map(int, input("请输入范围m和n:").split())
prime_list = [num for num in range(m, n+1) if is_prime(num)]
for i in range(len(prime_list)):
if i % 8 == 0:
print()
print(prime_list[i], end=' ')
except ValueError:
print("输入格式错误,请输入正确的数字范围!")
```
这里我们使用列表推导式来生成素数列表,然后使用`try-except`语句来处理输入格式错误的异常。如果输入格式错误,我们输出提示信息。否则,我们遍历素数列表,每输出8个素数就换行。
方法三:使用生成器和异常处理
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
def prime_range(m, n):
for num in range(m, n+1):
if is_prime(num):
yield num
try:
m, n = map(int, input("请输入范围m和n:").split())
prime_gen = prime_range(m, n)
count = 0
for num in prime_gen:
print(num, end=' ')
count += 1
if count % 8 == 0:
print()
except ValueError:
print("输入格式错误,请输入正确的数字范围!")
```
这里我们定义了一个生成器`prime_range`来生成素数,然后使用`try-except`语句来处理输入格式错误的异常。如果输入格式错误,我们输出提示信息。否则,我们遍历素数生成器,每输出8个素数就换行。
阅读全文