สมมติว่าเรามีจำนวนเฉพาะ n เราต้องตรวจสอบว่าสามารถแสดง n เป็น x + y โดยที่ x และ y ก็เป็นจำนวนเฉพาะทั้งคู่ได้หรือไม่
เช่น ถ้าอินพุตเป็น n = 19 ผลลัพธ์จะเป็น True เนื่องจากเราสามารถแสดงได้เป็น 19 = 17 + 2
ในการแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
- กำหนดฟังก์ชัน isPrime() รับตัวเลข
- ถ้าตัวเลข <= 1 แล้ว
- คืนค่า False
- ถ้าตัวเลขเท่ากับ 2 แล้ว
- คืนค่า True
- ถ้าตัวเลขเป็นเลขคู่ แล้ว
- คืนค่า False
- สำหรับ i ในช่วง 3 ถึงส่วนจำนวนเต็มของ (รากที่สองของตัวเลข + 1) เพิ่มทีละ 2 ทำ
- ถ้าตัวเลขหาร i ลงตัว แล้ว
- คืนค่า False
- ถ้าตัวเลขหาร i ลงตัว แล้ว
- คืนค่า 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