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