euler/35.js
2024-03-06 18:55:45 -06:00

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);