ホームページ >ウェブフロントエンド >jsチュートリアル >範囲内の素数を数える JavaScript プログラム
暴力法
数値が素数かどうかを判断する直接的な方法
上記のコードの時間計算量は O(N) で、各数値が素数かどうかを確認するには O(N*N) のコストがかかります。つまり、これは良い確認方法ではありません。
数学的方法
ある数値が別の数値を完全に割るとき、商も完全な整数になることがわかっています。つまり、数値 p を数値 q で割ることができる場合、商は r、つまり q * r = p になります。 。 r はまた、数値 p を商 q で割ります。つまり、完全な約数は常にペアで存在することになります。
リーリー
上記のコードでは、for ループのスコープを変更して前のコードを変更しただけです。これは、N 要素の最初の平方根のみをチェックし、カウントを 2 増やしたからです。L から R までの範囲内の素数の数
###例###
前に指定したコードを範囲内に実装し、指定された範囲内の素数の数を数えます。コードを実装しましょう -リーリー
上記のコードでは、for ループを使用して L から R までの範囲を反復し、各反復で現在の数値が素数かどうかを確認します。数値が素数の場合、カウントをインクリメントし、最後に値を出力します。###例###
エラトステネスのふるいアルゴリズムは非常に効率的で、指定された範囲内の素数の数を O(Nlog(log(N))) 時間で見つけることができます。他のアルゴリズムと比較して、非常に高速です。ふるいは O(N) スペースを占有しますが、時間は非常に効率的であるため、それは問題ではありません。コードを見てから、コードの説明に進みます -リーリー
上記のコードでは、エラトステネスのふるいの実装が見られます。最初にサイズ R を含む配列を作成し、その後 for ループを使用して配列を反復処理します。反復ごとに、現在の数値が 1 でない場合、それは素数ではないことを意味し、それ以外の場合は素数であり、R より小さいすべての数値が得られます。現在の素数の倍数は削除されます。次に、0 から現在のインデックスまでの素数カウントを格納するプレフィックス配列を作成し、0 から R までの範囲のすべてのクエリに定数時間で回答を提供します。時間と空間の複雑さ
以上が範囲内の素数を数える JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。