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

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


สมมติว่าเรามีจำนวนเฉพาะ n เราต้องตรวจสอบว่าสามารถแสดง n เป็น x + y โดยที่ x และ y ก็เป็นจำนวนเฉพาะทั้งคู่ได้หรือไม่

เช่น ถ้าอินพุตเป็น n = 19 ผลลัพธ์จะเป็น True เนื่องจากเราสามารถแสดงได้เป็น 19 = 17 + 2

ในการแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

  • กำหนดฟังก์ชัน isPrime() รับตัวเลข
  • ถ้าตัวเลข <= 1 แล้ว
    • คืนค่า False
  • ถ้าตัวเลขเท่ากับ 2 แล้ว
    • คืนค่า True
  • ถ้าตัวเลขเป็นเลขคู่ แล้ว
    • คืนค่า False
  • สำหรับ i ในช่วง 3 ถึงส่วนจำนวนเต็มของ (รากที่สองของตัวเลข + 1) เพิ่มทีละ 2 ทำ
    • ถ้าตัวเลขหาร i ลงตัว แล้ว
      • คืนค่า False
  • คืนค่า True
  • จากเมธอดหลัก ทำดังนี้:
  • ถ้า isPrime(number) และ isPrime(number - 2) ทั้งคู่เป็น true แล้ว
    • คืนค่า True
  • มิฉะนั้น
    • คืนค่า False

ลองดูการนำไปใช้ดังต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:

ตัวอย่าง

from math import sqrt
def isPrime(number):
    if number <= 1:
        return False
    if number == 2:
        return True
    if number % 2 == 0:
        return False
    for i in range(3, int(sqrt(number))+1, 2):
        if number%i == 0:
            return False
    return True

def solve(number):
    if isPrime(number) and isPrime(number - 2):
        return True
    else:
        return False

n = 19
print(solve(n))

อินพุต

19

ผลลัพธ์

True