Python程序:检查n是否可以表示为k个素数之和
假设有一个数字n和另一个数字k。我们必须检查n是否可以表示为k个素数之和。
因此,如果输入是n = 30,k = 3,则输出将为True,因为30可以表示为2 + 11 + 17。
要解决此问题,我们将遵循以下步骤:
- 如果n < k*2,则
- 返回False
- 如果k > 2,则
- 返回True
- 如果k与2相同,则
- 如果n是偶数,则
- 返回True
- 如果(n-2)是素数,则
- 返回True
- 返回False
- 如果n是偶数,则
- 如果n是素数,则
- 返回True
- 返回False
示例
让我们看看以下实现以更好地理解-
def isPrime(num):
if num > 1:
for i in range(2, num):
if num % i == 0:
return False
return True
return False
def solve(n, k):
if n < k*2:
return False
if k > 2:
return True
if k == 2:
if n%2 == 0:
return True
if isPrime(n-2):
return True
return False
if isPrime(n):
return True
return False
n = 30
k = 3
print(solve(n, k))
输入
30, 3
输出
True