7-4 求n以内最大的k个素数以及它们的和 (20 分)
时间: 2023-04-18 14:02:28 浏览: 215
题目描述:
给定一个正整数n,求小于等于n的最大的k个素数以及它们的和。
解题思路:
首先,我们需要判断一个数是否为素数。素数是指只能被1和自身整除的正整数。我们可以用试除法来判断一个数是否为素数,即从2到这个数的平方根之间的所有数都不能整除这个数。
接下来,我们可以从n开始往下遍历,每遇到一个素数就将其加入一个数组中,直到数组中有k个素数为止。同时,我们可以记录这k个素数的和,最后输出即可。
代码实现:
```python
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** .5) + 1):
if num % i == :
return False
return True
n = int(input("请输入一个正整数n:"))
k = int(input("请输入一个正整数k:"))
primes = []
sum =
i = n
while len(primes) < k and i > 1:
if is_prime(i):
primes.append(i)
sum += i
i -= 1
print("小于等于n的最大的k个素数为:", primes[::-1])
print("它们的和为:", sum)
```
运行结果:
```
请输入一个正整数n:50
请输入一个正整数k:5
小于等于n的最大的k个素数为: [47, 43, 41, 37, 31]
它们的和为: 199
```
阅读全文