2017-06-20 64 views
3

我正在嘗試編寫一個程序來查找所提供的參數的最小公倍數,這些參數可以被這兩個參數之間的範圍內的所有連續數字均分。爲什麼此循環在中途終止?

範圍將是一個兩個數字的數組,不一定按數字順序排列。

例如,對於圖1和3 - 找到既1和3是由1和3

爲什麼在i中的循環停止= 510000(或之間的所有數字整除的最小公倍接近於此)而不是700萬,就像我設定的那樣?

我也有輸出截圖:

function smallestCommons(arr) { 
 
    
 
    var start; 
 
    var finish; 
 
    var something; 
 
    
 
    if(arr[0] < arr[1]){start = arr[0]; finish = arr[1];}else{ 
 
     start = arr[1]; finish = arr[0]; 
 
    } 
 
    
 
    for(var i = finish;i <= 7000000;i++){ 
 
    var boolea = true; 
 
    for(var j = start;j <= finish;j++){ 
 
     if(i % j !== 0){boolea = false;break;} // 2 % 1 
 
    } 
 
    
 
    if(boolea)return i; 
 
    
 
    something = i; 
 
    } 
 
    
 
    console.log("final i = " + i); 
 
    
 
    return 0; 
 
}

+0

也許瀏覽器內存不足。 – Valay

+0

你的調試器告訴你什麼? –

+2

請嘗試https://jsbin.com/blog/protection#loopprotection以檢查jsbin是否不強制您的代碼退出循環 –

回答

2

嘗試在你的循環的開頭添加這

它必須是jsbin強制你的代碼退出循環。請參閱source