Assignment 6 - Sieve of Eratosthenes
by aren_anderson
HTML
<h3>
Enter Size of Queue
</h3>
<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();
}