Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonプログラムで素数を見つけるためのさまざまな方法の分析


このチュートリアルでは、すべてのメソッドに必要な素数と時間を見つけるためのさまざまなメソッドを見ていきます。時間モジュールを使用して実行時間を計算します。

方法-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

結論

チュートリアルについて疑問がある場合は、コメントセクションにその旨を記載してください。


  1. 素数をチェックするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数が与えられているので、与えられた数が素数であるかどうかを確認する必要があります。 1より大きい特定の正の数で、1以外の要素はなく、その数自体は素数と呼ばれます。 2、3、5、7などは他の要素がないため素数です。 以下のこのプログラムでは、素数または非素数の性質について番号がチェックされます。 1以下の数は素数とは言えません。したがって、数値が1より大きい場合にのみ反復します。 ここで、その数が2から(num-1 // 2)の範囲の任意の数で正確に割り切れるかどうかを確認します。指定された範囲内に何ら

  2. 数の最大の素因数を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 正の整数nが与えられます。数の最大の素因数を見つける必要があります。 アプローチ 指定された数値を数値の約数で割って因数分解します。 最大素因数を更新し続けます。 例 import math def maxPrimeFactor(n):    # number must be even    while n % 2 == 0:       max_Prime = 2       n /= 1