2016-10-17 304 views
1

嗨,感謝您花時間看看這個。循環遍歷for循環和If/Else

我試圖實現以下輸出:

迭代0:
隊列1 = 2345678910 |隊列2 =
迭代1:
隊列1 = 3579 |隊列2 = 2
迭代2:
隊列1 = 57 |隊列2 = 23
迭代3:
隊列1 = 7 |隊列2 = 235
迭代4:
隊列1 = |隊列2 = 2357

這應該是「The Sieve of Eratosthenes」的實施
我不會騙這顯然是學校的工作! (儘管最後期限已經過去了,我並沒有試着去簡單的成績,但我真的想知道爲什麼我無法得到這個工作)
我做了大量的搜索,但是我發現所有類似的東西都是用數組實現的。 (其中教授不允許)

here是小提琴,顯示我在哪裏:

這似乎是我的問題,但不會刪除最後一個項目。

if (this.first == this.last) { 
     this.first = null; 
     return this.first.content; 
     this.length--; 
    } 

我凌亂它與各種控制語句找到邏輯問題...

,當我開始我很確定我可以像如下:

通過循環排隊1和保存的電流值開始到(x) - 通過隊列1循環,將第一個項目到隊列2 ---- IF/ELSE當前項是通過在別的重新隊列x將除盡

我切換它取決於循環,但它被套牢拆除的最後一個項目

// find the primes function 
    function fp() { 

    fillQueue(); // call the fillQueue function below 

    document.getElementById("output").innerHTML += "Ctrl " + "|it. " + it + " |queue length " + q1.length + " |x " + x + " |current x" + cx + " |Q1: = " + q1.toString() + " | Q2: = " + q2.toString() + " | Q3: = " + q3.toString() + "<br />"; 

    while (q1.length >= 0) { 
    dq1(); 
    cx = x; 
    q3.enqueue(cx); 

    while (q1.length >= 0) { 
     dq1(); 
     eval(); 
     it++; 
    } 


    while (q2.length >= 0) { 
     dq2(); 
     d1.enqueue(x); 
    } 
    } 
+1

記住:'='是分配,''==(或更好,''===)是用於比較。這條線會給你帶來一些麻煩:it = n - 1。這應該也可能是'<或'<='而不是'='。 –

+0

感謝您的回覆......修復了迭代問題並讓我更接近......仍然有一些問題需要解決,因爲輸出仍然不正確 – Qriz75

回答

1

我建議使用不同的方法和循環而數字的第一個元素是不是直到檢查應該發生的數量少的。進行協議輸出,將第一個數字元素推至multiples,然後過濾numbers,檢查索引爲零的數字的倍數。

最後做出另一個協議輸出。

function calculate() { 
 
    var number = document.getElementById('number').value, 
 
     numbers = Array.apply(null, { length: number - 1 }).map(function (_, i) { return i + 2; }), 
 
     multiples = []; 
 

 
    while (numbers[0] < number) { 
 
     document.getElementById('out').innerHTML += numbers.join(' ') + ' ||| ' + multiples.join(' ') + '\n'; 
 
     multiples.push(numbers[0]); \t \t \t \t 
 
     numbers = numbers.filter(function (a) { 
 
      return a % numbers[0]; 
 
     }); \t \t \t \t 
 
    } 
 
    document.getElementById('out').innerHTML += numbers.join(' ') + ' ||| ' + multiples.join(' ') + '\n'; 
 
}
<input id="number" /><button onclick="calculate()">calculate</button> 
 
<pre id="out"></pre>

+0

非常感謝您......我喜歡這樣......教授不允許使用數組。我將嘗試使用隊列來實現這一點。 – Qriz75

+0

我的出隊過程有些不正確...它不會刪除最後一個項目;-( – Qriz75