Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 프로그램에서 소수를 찾는 다양한 방법 분석

<시간/>

이 튜토리얼에서는 모든 방법에 필요한 소수와 시간을 찾는 다양한 방법을 볼 것입니다. 실행 시간을 계산하기 위해 time 모듈을 사용할 것입니다.

방법-1

소수를 찾는 일반적인 방법입니다.

  • 숫자가 1보다 작거나 같으면 False를 반환합니다.
  • 숫자가 임의의 숫자로 나눌 수 있는 경우 함수는 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

이전 방법에서는 짝수를 확인했습니다. 짝수는 2를 제외하고는 소수가 될 수 없다는 것을 우리 모두 알고 있습니다. . 따라서 이 방법에서는 시간을 줄이기 위해 모든 짝수를 제거합니다.

# 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

결론

튜토리얼과 관련하여 의심스러운 점이 있으면 댓글 섹션에 언급하세요.