3.输入2个正整数 和n(m>=1,n<=500),输出m到n之间所有的素数,每行输出6
时间: 2024-11-25 14:16:22 浏览: 5
素数是指大于1的自然数,除了1和它本身以外不再有其他因数的数。要在给定范围内(m到n,其中m和n都是正整数且m >= 1, n <= 500)打印所有素数,可以采用埃拉托斯特尼筛法或试除法。以下是简单的算法描述:
1. 首先创建一个布尔数组isPrime[501],并初始化所有元素为true,因为最初认为从2到500的所有数字都是素数。
2. 从第一个素数2开始,遍历到sqrt(n)。对于每个素数p,将isPrime数组里p的倍数标记为false,因为它们不是素数。
3. 遍历范围m到n,如果isPrime[i]仍然为true,则i是一个素数,将其打印出来,并跳过后续的6个数,因为题目要求每行输出6个素数。
示例代码(Python):
```python
def print_primes(m, n):
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
for p in range(2, int(n**0.5) + 1):
if is_prime[p]:
for i in range(p*p, n+1, p):
is_prime[i] = False
for i in range(m, n+1):
if is_prime[i]:
print(*range(i, min(i+6, n+1)), sep=' ')
# 示例
print_primes(2, 500)
```
阅读全文