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 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