ให้ n, k ตรวจสอบว่า n แทนเป็นผลรวมของ k จำนวนเฉพาะได้หรือไม่
ตัวอย่าง: n=30, k=3 → True (2+11+17)
ขั้นตอน (Number Theory)
- ถ้า
n < 2k:False(จำนวนเฉพาะน้อยสุดคือ 2) - ถ้า
k > 2:True(ทฤษฎี Goldbach Weak Conjecture) - ถ้า
k == 2:nต้องเป็นเลขคู่ หรือn-2เป็นเฉพาะ - ถ้า
k == 1:nต้องเป็นเฉพาะ
ตัวอย่างโค้ด
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)) # Output: Trueอินพุต
30, 3
เอาต์พุต
True