簡體   English   中英

在 Javascript 中找到 integer 的最大素數

[英]Finding the greatest prime factor of an integer in Javascript

我正在嘗試編寫一個簡單的程序來找到 JavaScript 中 integer 的最大素數。 我為此編寫的代碼如下:

let ans;

function factor(target, half) {
    for (let i = 2; i < half; i++) {
        if (target % i == 0) {
            ans = target / i;
            factor(ans, ans / 2);
        }
    }
}

factor(30, 15);
console.log(ans);

現在,這段代碼是否是解決問題的有效解決方案,或者它是否完全有效,這超出了我的問題:當我遵循在factor function 的每一行設置的斷點時,我看到在i = 2之后, target = 5half = 2.5ans = 5 ,target 和 half 的值分別跳回157.5 但是,我沒有看到我的代碼中的哪些值被告知要更改。

您正在遞歸地調用 function ,並且每次調用function 都會獲得自己的targethalfi變量。 在第一次調用factor時, target30half15 然后你用 arguments 157.5再次調用它; factor內部調用得到它自己的target ( 15 ) 和half ( 7.5 ),但外部調用仍然有它的副本 ( 30 ) 和 ( 15 )。 當您再次遞歸調用factor時,這種情況會繼續,創建第三組,等等。當您退出最里面的調用時,它的變量會消失,您會看到調用它的調用的變量。

用一個更簡單的例子可能會更清楚:

 function countdown(value, indent) { var twice = value * 2; console.log(indent + "[before] value = " + value + ", twice = " + twice); if (value > 0) { countdown(value - 1, indent + " "); } console.log(indent + "[after] value = " + value + ", twice = " + twice); } countdown(3, "");
 .as-console-wrapper { max-height: 100%;important; }

其 output 為:

[before] value = 3, twice = 6
  [before] value = 2, twice = 4
    [before] value = 1, twice = 2
      [before] value = 0, twice = 0
      [after]  value = 0, twice = 0
    [after]  value = 1, twice = 2
  [after]  value = 2, twice = 4
[after]  value = 3, twice = 6

如您所見,外部調用中valuetwice的值不會因內部調用而改變。 每個調用都有自己的一組變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM