python用递归函数求素数和
时间: 2023-09-09 15:09:47 浏览: 163
好的,我可以为您解答这个问题。以下是Python中使用递归函数求素数和的代码:
```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
def prime_sum(nums):
if not nums:
return 0
if is_prime(nums[0]):
return nums[0] + prime_sum(nums[1:])
else:
return prime_sum(nums[1:])
```
在这个代码中,我们定义了两个函数:is_prime(num) 和 prime_sum(nums)。is_prime(num) 函数用于判断一个数是否为质数,prime_sum(nums) 函数则使用递归方式计算列表中所有质数的和。
首先,is_prime(num) 函数会检查传入的 num 是否小于 2。如果 num 小于 2,那么 num 不是质数,函数就会返回 False。如果 num 大于等于 2,那么函数就会从 2 到根号 num (用 int(num ** 0.5) + 1 可以取到根号 num 的上整数)逐一枚举,检查 num 能否被这些数整除。如果存在某个数能够整除 num,那么 num 就不是质数,函数就会返回 False。如果没有任何数能够整除 num,那么 num 就是质数,函数就会返回 True。
接着,prime_sum(nums) 函数首先判断 nums 是否为空。如果 nums 为空,则返回 0。否则,函数就会检查 nums 的第一个元素是否为质数。如果 nums 的第一个元素是质数,那么函数就会将这个元素和 prime_sum(nums[1:]) 的值相加。如果 nums 的第一个元素不是质数,那么函数就会忽略这个元素,直接返回 prime_sum(nums[1:]) 的值。
最终,当 prime_sum(nums) 函数递归到 nums 为空时,就会结束递归,返回 0。这样,我们就可以通过 prime_sum(nums) 函数来求解一个列表中所有质数的和了。
阅读全文