题目要求输入一个正整数n,然后统计在[0,n]之间最大的10个素数。
时间: 2024-02-19 14:03:04 浏览: 64
输入一个正整数,判断是不是素数(C++)
以下是 Python 代码实现:
```python
def is_prime(n):
"""
判断一个数是否为素数
"""
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def max_primes(n, k=10):
"""
统计在[0,n]之间最大的k个素数
"""
primes = []
for i in range(2, n + 1):
if is_prime(i):
if len(primes) < k:
primes.append(i)
else:
min_prime = min(primes)
if i > min_prime:
primes.remove(min_prime)
primes.append(i)
return sorted(primes, reverse=True)
n = int(input("请输入一个正整数n:"))
k = 10
primes = max_primes(n, k)
print(f"在[0,{n}]之间最大的{k}个素数为:{primes}")
```
这个函数首先定义了一个判断一个数是否为素数的 `is_prime` 函数。然后在 `max_primes` 函数中遍历从2到n的所有整数,如果是素数就加入到一个列表中。如果列表长度小于k,直接加入;否则,找出列表中最小的素数,如果当前素数大于它,则将它替换掉。最后返回这个素数列表。
阅读全文