请求一个算法,当给定一个正整数 n 时,如何找到并返回所有小于等于 n 的最大三个质数(素数)?
时间: 2024-12-02 08:29:00 浏览: 26
寻找小于等于给定正整数 n 的最大三个质数的算法可以分为以下几个步骤:
1. **定义函数**:首先创建一个辅助函数 `is_prime` 来判断一个数是否是质数。这个函数会检查从 2 到该数平方根的所有整数是否能整除它。
```python
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
```
2. **初始化变量**:设置一个空列表 `primes` 用于存储找到的质数,以及两个变量 `count` 记录已找到的质数数量和 `largest_primes` 存储最大的三个质数。
3. **遍历**:从 2 开始,逐个检查每个数,如果它是质数,并且 `count` 小于 3,就添加到 `primes` 中,并更新 `largest_primes`;如果 `count` 达到 3,则比较新发现的质数与当前 `largest_primes` 中最小的那个,若更大则替换掉。
```python
def find_largest_three_primes(n):
primes = []
count = 0
largest_primes = []
for num in range(2, n+1):
if is_prime(num):
primes.append(num)
count += 1
# 如果找到三个质数,更新最大值
if count == 3:
if len(largest_primes) == 0 or num > largest_primes[0]:
largest_primes = [num]
elif num > largest_primes[1]:
largest_primes[1] = num
elif num > largest_primes[2]:
largest_primes[2] = num
return largest_primes
```
4. **返回结果**:当遍历结束后,`largest_primes` 列表将包含小于等于 n 的最大三个质数。
阅读全文