2014-10-28 43 views
0

我有一個程序,我正在努力,但需要一些幫助。我讓用戶輸入最小數量和最大數量。我有一個for循環,循環遍歷數字範圍並顯示在屏幕上。我還需要找出每個數字的因素。我在for循環中有一個while循環,但我得到一個「分配大小溢出」的錯誤。Javascript - 因子2數字

這是我到目前爲止有:

function getFactors(lowNum, highNum){ 

var result = "Finding all factors of numbers between " 
       + lowNum + " and " + highNum + "<br /><br />"; 

for (var x=lowNum; x <= highNum; x++) { 
    result += "<b>" + x + ":</b>";     
    //for loop to loop through the terms 


    var factor=2; 
    while(factor <= lowNum){ 
     if (lowNum % factor == 0){  
      result += factor + ", <br />"; 
     }   
     lowNum++; 
    } 
} 
return result; 

} 

getFactors(2, 10); 

回答

3

在你的while循環你遞增lowNum代替factor,所以循環將永遠運行下去。當改變它在我的瀏覽器中工作。只要小心,以免用戶輸入太多數字,導致瀏覽器崩潰/死機。

您的邏輯也有點不對,因爲您在while循環中使用lowNum而不是x。在你的代碼中你基本上不使用x。

這裏是你的while循環編輯,以便它像預期:

while(factor <= x){ 
    if (x % factor == 0){  
     result += factor + ", <br />"; 
    }   
    factor ++; 
} 
+1

謝謝,我會試試看。 – user1863593 2014-10-28 18:27:56

1

除了Izzey的回答是:你正在運行正是爲了lowNumhighNum之間的x所有值相同的代碼。您應該在while循環中使用x而不是lowNum

+0

是的,我只是注意到並編輯了我的答案。他在while循環中使用'lowNum'而不是'x' – orhanhenrik 2014-10-28 18:22:01