Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบ n แทนเป็นผลรวม k จำนวนเฉพาะได้หรือไม่ใน Python

ให้ n, k ตรวจสอบว่า n แทนเป็นผลรวมของ k จำนวนเฉพาะได้หรือไม่

ตัวอย่าง: n=30, k=3 → True (2+11+17)

ขั้นตอน (Number Theory)

  1. ถ้า n < 2k: False (จำนวนเฉพาะน้อยสุดคือ 2)
  2. ถ้า k > 2: True (ทฤษฎี Goldbach Weak Conjecture)
  3. ถ้า k == 2: n ต้องเป็นเลขคู่ หรือ n-2 เป็นเฉพาะ
  4. ถ้า 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