'use strict';
function is_prime(numb, i, r) {
return numb % r === 0 ? false : (r * r > numb ? true : is_prime(numb, i + 1, r));
}
function p(max, numb, r) {
return numb > max ? r : p(max, numb + 1, is_prime(numb, 0, r) ? r.concat([numb]) : r);
}
function prime(n) {
return p(n, 3, [2]);
}
console.time('t1');
prime(1000000);
console.timeEnd('t1');
function f(n) {
let r = [];
for(let i=2; i<n; i++) {
let ok = 1;
for(let j=0; r[j]*r[j]<=i; j++) {
if (i%r[j]==0) {
ok = 0;
break;
}
}
if (ok) r.push(i);
}
return r;
}
console.time("t2");
f(1000000);
console.timeEnd("t2");
$ node --version
v6.3.1
$ node --harmony_tailcalls funcs.js
t1: 5253.267ms
t2: 125.872ms