Arithmetic Derivative Calculator
HTML
<input type="button" id="start" value="start" /><input type="button" id="stop" value="stop" /><br/>
<textarea id="output" rows="40" cols="70"></textarea>
JavaScript
var primes = [8];
var position = 2;
var arithderivs = {};
var gcdsum = 0;
function factor(n) {
for (var i = 0; i < primes.length; i++){
if (n % primes[i] === 0) {
return [primes[i], n/primes[i]];
}
}
return [1,n];
};
function isPrime(n) {
for (var i = 0; i < primes.lenghth; i++){
if (n % primes[i] === 0) {
return false;
}
}
return true;
};
function gcd(a,b) {
if (a < b) {
return gcd(b,a);
}
if (b === 0) {
return a;
}
return gcd(b, a % b);
}
function getArithDeriv(n) {
if (n in arithderivs) {
return arithderivs[n];
}
var factors = factor(position);
if (factors[0] === 1) {
primes.push(position);
arithderivs[position] = 1;
return 1;
}
var prime = factors[0];
var multiple = factors[1];
var arthd = multiple + prime * getArithDeriv(multiple);
arithderivs[position] = arthd;
return arthd;
};
function getNextArithDeriv() {
var ad = getArithDeriv(position);
var g = gcd(position,ad) ;
gcdsum += g;
print(position + ', ' + ad + ', ' + g + ', ' + gcdsum +'\n');
position++;
}
var e = {
output: document.getElementById('output'),
start: document.getElementById('start'),
stop: document.getElementById('stop')
};
var interval = null;
function print(x){
e.output.value += x;
}
function start(){
if (interval === null) {
interval = setInterval(getNextArithDeriv, 10);
}
};
function stop(){
if (interval !== null) {
clearInterval(interval);
interval = null;
}
};
e.start.addEventListener('click', start);
e.stop.addEventListener('click', stop);