สมมติว่าเรามีตัวเลข n เราต้องตรวจสอบว่า n เป็นจำนวนเฉพาะที่แข็งแกร่งหรือไม่ อย่างที่เราทราบจำนวนเฉพาะที่บอกว่าเป็นจำนวนเฉพาะที่แข็งแกร่งเมื่อเป็นจำนวนเฉพาะที่มากกว่าค่าเฉลี่ยของจำนวนเฉพาะที่ใกล้เคียงที่สุด
ดังนั้น หากอินพุตมีค่าเท่ากับ num =37 ผลลัพธ์จะเป็น True เนื่องจากจำนวนเฉพาะที่ใกล้เคียงที่สุดคือ 31 และ 41 ค่าเฉลี่ยคือ (31+41)/2 =36 และ 37> 36
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้า num ไม่ใช่จำนวนเฉพาะหรือ num เป็น 2 แล้ว
- คืนค่าเท็จ
- สุดท้าย :=num - 1 ถัดไป :=num + 1
- ในขณะที่ถัดไปไม่ใช่จำนวนเฉพาะ ให้ทำ
- ถัดไป :=ถัดไป + 1
- ในขณะที่อันสุดท้ายไม่ใช่จำนวนเฉพาะ ให้ทำ
- สุดท้าย :=สุดท้าย - 1
- เฉลี่ย :=(สุดท้าย + ถัดไป) / 2
- ถ้า num> เฉลี่ย แล้ว
- คืนค่า 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(num): if isPrime(num) == False or num == 2: return False last = num - 1 next = num + 1 while isPrime(next) == False: next += 1 while isPrime(last) == False: last -= 1 avg = (last + next) / 2 if num > avg: return True return False num = 37 print(solve(num))
อินพุต
37
ผลลัพธ์
True