Prime numbers and circle test
by rastrano
HTML
<script type="text/javascript">
//<![CDATA[
// calculate successive prime numbers
var Prime = function() {
// current prime number
this.prime = 1;
// return true if NUM is prime
this.isPrime = function(num) {
var result = true;
if (num !== 2) {
if (num % 2 == 0) {
result = false;
} else {
for (x=3; x<=Math.sqrt(num); x+=2) {
if (num % x == 0) result = false;
}
}
}
return result;
}
// return next prime number
this.nextPrime = function() {
this.prime++;
while (!this.isPrime(this.prime)) this.prime++;
return this.prime;
}
}
// prime
this.prime = new Prime();
// current delay
this.delay = 100;
// calculate primes
function calcPrimesLoop() {
var primes = document.getElementById('primes');
var prime=this.prime.nextPrime();
var diam=(prime/(2*Math.PI))*2
primes.appendChild(document.createTextNode(' '+prime+" diam: "+diam));
calcPrimesDelay = setTimeout('calcPrimesLoop()', this.delay);
}
// start calculating primes
function calcPrimesStart() {
var prime = this.prime.nextPrime();
var calculate = document.getElementById('calculate');
calculate.href = 'javascript:calcPrimesStop()';
calculate.firstChild.data = 'calculate on';
var primes = document.getElementById('primes');
var spacer = ' ';
if (prime == 2) spacer = '';
primes.appendChild(document.createTextNode(spacer+prime));
scrollPrimesStart();
calcPrimesDelay = setTimeout('calcPrimesLoop()', this.delay);
}
// stop calculating primes
function calcPrimesStop() {
clearTimeout(calcPrimesDelay);
var calculate = document.getElementById('calculate');
calculate.href = 'javascript:calcPrimesStart()';
calculate.firstChild.data = 'calculate off';
scrollPrimesStop();
}
//...