首頁  >  文章  >  web前端  >  如何在 JavaScript 中高效率判斷一個數字是否為質數?

如何在 JavaScript 中高效率判斷一個數字是否為質數?

Patricia Arquette
Patricia Arquette原創
2024-10-26 17:56:30462瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn