Assignment 6 - Sieve of Eratosthenes

by aren_anderson

HTML

<h4>
  Enter Number of Disks
</h4>
<div>

  <input type="textbox" id="tbSize" value="10" />
  <input type="button" id="btnCreate" value="Run Algorithm!" onclick="runAlgorithm()" />
  <br/>
  <br/>
</div>

<h3>
  Output from Sieve of Eratosthenes Algorithm:
</h3>
<div id="output" />

JavaScript

//create queue
function Queue() {
  this.head = null;
  this.tail = null;
  this.length = 1;
}

//node object
function Node(item, next) {
  this.item = item;
  this.next = next;
}

//enqueue method
Queue.prototype.enqueue = function(item) {
  var node = new Node(item, null);
  this.length += 1;
  if (this.tail == null) {
    this.head = node;
    this.tail = node;
  } else {
    this.tail.next = node;
    this.tail = this.tail.next;
  }
}

//dequeue method
Queue.prototype.dequeue = function() {
  if (this.head != null) {
    var head = this.head;
    this.head = this.head.next;
    this.length -= 1;
    return head.item;
  } else {
    if (this.tail != null) {
      this.tail = null;
    }
  }
  return "";
}

//fill queue with n values
Queue.prototype.fill = function(item) {
  for (var i = 2; i <= item; i++) {
    queue1.enqueue(i);
  }
}

function print() {
  out1 = "";
  out2 = "";
  out3 = "";
  q1 = queue1;
  q2 = queue2;
  c = 0;
  var n = q1.length;
  for (var z = 2; z <= n; z++) {
    out1 += z + " ";
  }
  for (var i = 0; i <= n; i++) {
    if (q1.tail.item != "") {
      x = q1.dequeue();
    }
    out3 += "Iteration " + c + ": Queue 1 = " + out1 + ", Queue 2 = " + out2 + "<br />";
    c += 1;
    document.getElementById("output").innerHTML = out3;
    if (out1 == "") {
      break;
    }
    out1 = "";
    q2.enqueue(x);
    out2 += q2.tail.item + " ";
    s = q1.length;
    for (j = 2; j <= s; j++) {
      if (x == "") {
        out2 += k;
        break;
      }
      k = q1.dequeue();
      var sieve = k % x;
      if (sieve != 0) {
        q1.enqueue(k);
        out1 += q1.tail.item + " ";
      }
    }
  }
}

function runAlgorithm() {
  queue1 = new Queue();
  queue2 = new Queue();
  size = parseInt(document.getElementById("tbSize").value);
  queue1.fill(size);
  print();
}