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

การวิเคราะห์วิธีต่างๆ เพื่อค้นหา Prime Number ในโปรแกรม Python


ในบทช่วยสอนนี้ เราจะมาดูวิธีการต่างๆ เพื่อค้นหาจำนวนเฉพาะและเวลาที่จำเป็นสำหรับทุกวิธี เราจะใช้โมดูลเวลาเพื่อคำนวณเวลาดำเนินการ

วิธีที่-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

บทสรุป

หากคุณมีข้อสงสัยเกี่ยวกับบทแนะนำ โปรดระบุในส่วนความคิดเห็น