function is_prime(n: number) {
if (n == 2) {
return true;
}
if (n < 2 || n % 2 == 0) {
return false;
}
for (let i = 3; i * i <= n; i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
function cyclically_rotate_left(n: any) {
let m: any = n;
let p: number = 1;
while (m >= 10) {
p *= 10;
m /= 10;
}
return parseInt((m + 10 * (n % p)));
}
function is_circular_prime(n: number) {
if (!is_prime(n)) {
return false;
}
let rotated_n = cyclically_rotate_left(n);
while (rotated_n != n) {
if (rotated_n < n || !is_prime(rotated_n)) {
return false;
}
rotated_n = cyclically_rotate_left(rotated_n);
}
return true;
}
// 1193 = prime
// 3119 = prime
// 9311 = prime
// 1931 = prime
let n: number = 2;
for (let i = 0; i < 18; n++) {
if (is_circular_prime(n)) {
console.log(n);
i++;
}
}
/*
run:
2
3
5
7
11
13
17
37
79
113
197
199
337
1193
3779
11939
19937
193939
*/