ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で数値が素数かどうかを効率的に判断するにはどうすればよいですか?

JavaScript で数値が素数かどうかを効率的に判断するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-26 17:56:30
オリジナル
540 人が閲覧しました

How to Efficiently Determine if a Number is Prime in JavaScript?

JavaScript での素数チェック

この記事では、JavaScript を使用せずに指定された数値が素数であるかどうかを判断する問題について説明します。素数とは、1 より大きく、1 とそれ自体を除く他の自然数では割り切れない整数です。

解決策 1

従来の方法では、2 から反復する必要があります。入力数値の平方根を計算し、その数値がこれらのいずれかで割り切れるかどうかを確認します。もしそうであれば、それはプライムではありません。それ以外の場合は、そうです。

<code class="javascript">let inputValue = 7;
let isPrime = inputValue == 1 ? false : true; // because 1 is not prime

for (let i = 2; i < inputValue; i++) {
  inputValue % i == 0 ? (isPrime *= false) : (isPrime *= true);
}

alert(`${inputValue} is ${isPrime ? 'prime' : 'not prime'} number`);
ログイン後にコピー

時間計算量: O(sqrt(n))
空間計算量: O(1)

解決策 2

別のアプローチでは、2 より大きい素数は奇数になり得ないという事実を利用します。したがって、2 で割り切れる可能性をチェックし、次に入力数値の平方根までの奇数で割り切れるかどうかをチェックするだけで十分です。この最適化により、実行時間が大幅に短縮されます。

<code class="javascript">const isPrime = num => {
  if (num <= 1) return false;
  if (num <= 3) return true;
  if (num % 2 == 0 || num % 3 == 0) return false;
  for (let i = 5; i * i <= num; i += 6) {
    if (num % i == 0 || num % (i + 2) == 0) return false;
  }
  return true;
};</code>
ログイン後にコピー

時間計算量: O(sqrt(n))
空間計算量: O(1)

以上がJavaScript で数値が素数かどうかを効率的に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート