ในบทช่วยสอนนี้ เราจะมาดูวิธีการต่างๆ เพื่อค้นหาจำนวนเฉพาะและเวลาที่จำเป็นสำหรับทุกวิธี เราจะใช้โมดูลเวลาเพื่อคำนวณเวลาดำเนินการ
วิธีที่-1
เป็นวิธีการทั่วไปในการหาจำนวนเฉพาะ
- ถ้าตัวเลขน้อยกว่าหรือเท่ากับหนึ่ง ให้คืนค่าเท็จ
- ถ้าตัวเลขหารด้วยตัวเลขใดๆ ลงตัว ฟังก์ชันจะคืนค่าเป็น False
- หลังจากวนซ้ำ ให้คืนค่า True
ตัวอย่าง
# importing time module import time # checking for prime def is_prime(n): if n <= 1: return False else: for i in range(2, n): # checking for factor if n % i == 0: # return False return False # returning True return True # starting time start_time = time.time() primes = 0 for i in range(100000): if is_prime(i): primes += 1 print(f'Total primes in the range {primes}') # ending time end_time = time.time() print(f'Execution time: {end_time - start_time}')
ผลลัพธ์
หากคุณเรียกใช้โปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้
Total primes in the range 9594 Execution time: 63.1301212310791
วิธีที่ 2
ในวิธีนี้ เรากำลังลดจำนวนการวนซ้ำโดยตัดให้เป็นสแควร์รูทของ n
มาดูโค้ดกันเลย
ตัวอย่าง
# importing time module import time # importing math module for sqrt function import math # checking for prime def is_prime(n): if n <= 1: return False else: # iterating loop till square root of n for i in range(2, int(math.sqrt(n)) + 1): # checking for factor if n % i == 0: # return False return False # returning True return True # starting time start_time = time.time() primes = 0 for i in range(100000): if is_prime(i): primes += 1 print(f'Total primes in the range {primes}') # ending time end_time = time.time() print(f'Execution time: {end_time - start_time}')
ผลลัพธ์
หากคุณเรียกใช้โปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้
Total primes in the range 9592 Execution time: 0.2039644718170166
วิธีที่-3
ในวิธีก่อนหน้านี้ เราได้ตรวจสอบเลขคู่แล้ว เราทุกคนรู้ดีว่าจำนวนคู่ไม่สามารถเป็นจำนวนเฉพาะได้ ยกเว้น สอง . ดังนั้น ในวิธีนี้ เราจะลบค่าคู่ทั้งหมดเพื่อลดเวลา
ตัวอย่าง
# importing time module import time # importing math module for sqrt function import math # checking for prime def is_prime(n): # checking for less than 1 if n <= 1: return False # checking for 2 elif n == 2: return True elif n > 2 and n % 2 == 0: return False else: # iterating loop till square root of n for i in range(3, int(math.sqrt(n)) + 1, 2): # checking for factor if n % i == 0: # return False return False # returning True return True # starting time start_time = time.time() primes = 0 for i in range(100000): if is_prime(i): primes += 1 print(f'Total primes in the range {primes}') # ending time end_time = time.time() print(f'Execution time: {end_time - start_time}')
ผลลัพธ์
หากคุณเรียกใช้โปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้
Total primes in the range 9592 Execution time: 0.10342741012573242
บทสรุป
หากคุณมีข้อสงสัยเกี่ยวกับบทแนะนำ โปรดระบุในส่วนความคิดเห็น