40 lines
702 B
JavaScript
40 lines
702 B
JavaScript
import * as euler from 'euler.js';
|
|
|
|
function rotate_num(n)
|
|
{
|
|
var digits = euler.digits(n);
|
|
return Math.trunc((n%10)*Math.pow(10,digits-1)+(n/10));
|
|
}
|
|
|
|
function num_rotated(n)
|
|
{
|
|
var rot = [n];
|
|
var num = rotate_num(n);
|
|
var digits = euler.digits(n);
|
|
|
|
while (num !== n && euler.digits(num) === digits) {
|
|
rot.push(num);
|
|
num = rotate_num(num);
|
|
}
|
|
return rot;
|
|
}
|
|
|
|
function circular_prime(p)
|
|
{
|
|
var rot = num_rotated(p);
|
|
return rot.every(n => primes[n]);
|
|
}
|
|
|
|
var count = 0;
|
|
var primes = {};
|
|
|
|
for (var i = 0; i < 1000000; i++)
|
|
if (euler.isprime(i)) primes[i] = true;
|
|
|
|
Object.keys(primes).forEach(function(p) {
|
|
p = Number(p);
|
|
if (circular_prime(p)) count++;
|
|
});
|
|
|
|
console.log(count);
|