숫자 n과 또 다른 숫자 k가 있다고 가정합니다. n이 k개의 소수의 합으로 표현될 수 있는지 확인해야 합니다.
따라서 입력이 n =30 k =3과 같으면 30이 2 + 11 + 17과 같이 표시될 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n
- 거짓을 반환
- 참 반환
- n이 짝수이면
- 참 반환
- (n-2)가 소수이면
- 참 반환
- 거짓을 반환
- 참 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
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