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

โปรแกรมตรวจสอบ n สามารถแสดงเป็นผลรวมของ k ไพรม์หรือไม่ใน Python


สมมติว่าเรามีอินพุตสองตัว n และ k เราต้องตรวจสอบว่า n สามารถแสดงเป็นผลรวมของค่าเฉพาะจำนวน k ได้หรือไม่

ดังนั้น หากอินพุตเป็นเหมือน n =30 k =3 เอาต์พุตจะเป็น True เพราะ 30 สามารถแสดงได้เหมือน 2 + 11 + 17

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า 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