ホームページ >バックエンド開発 >Python チュートリアル >Python で素数を効率的に識別する方法: ステップバイステップ ガイド
Python で素数を効率的に識別する
指定された範囲内で一連の素数を見つけることは、一般的なプログラミング タスクです。 Python でこれを実現するには、ループと条件ステートメントの論理シーケンスを使用して素数を決定します。ただし、最初の試行によっては誤った結果が生じる可能性があることに注意することが重要です。
素数識別のためのコードの修正
元のコードを検査すると重大な欠陥が判明: 素数ではなく奇数が誤って表示されます。このエラーは、非素数を効果的に識別する条件が欠落していることが原因で発生します。問題の内訳は次のとおりです:
<code class="python">for num in range(1, 101): for i in range(2, num): if num % i == 0: break else: print(num) break</code>
これを修正するには、数値が 2 とそれ自体の間の任意の数値で割り切れるかどうかを明示的にチェックする必要があります。約数が見つからない場合は素数になります。改善されたバージョンは次のとおりです。
<code class="python">for num in range(2, 101): prime = True for i in range(2, num): if (num % i == 0): prime = False if prime: print(num)</code>
効率を高めるためにコードを最適化する
パフォーマンスを向上させるには、指定された値の平方根までの除数のみをチェックすることをお勧めします。番号。この範囲内に約数が見つからない場合、それは素数であると見なされます。この最適化により、必要な反復回数が大幅に削減されます。
<code class="python">import math for num in range(2, 101): if all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1)): print(num)</code>
さらなる改良
素数の方が大きいため、奇数のみを選択することで、コードをさらに効率的にすることができます。 2 よりも常に奇数です。修正されたコード:
<code class="python">import math print(2) for num in range(3, 101, 2): if all(num % i != 0 for i in range(3, int(math.sqrt(num)) + 1, 2)): print(num)</code>
以上がPython で素数を効率的に識別する方法: ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。