소수 중에서 각 자리의 숫자들을 순환시켜도 여전히 소수인 것을 circular prime이라고 합니다. 예를 들어 197은 971, 719가 모두 소수이므로 여기에 해당합니다.
이런 소수는 100 밑으로 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97 처럼 13개가 있습니다.
그러면 1,000,000 밑으로는 모두 몇 개나 있을까요?
뭐 별 수 있겠는가? 그냥 짜야지…
역시 소수를 가져오는데는 모듈을 사용했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/env perl use 5.010; use strict; use warnings; use Math::Prime::Util ':all'; my @a; for (@{primes(1000000)}) { my @t = split (//, $_); my $b = 1; for (0..length($_)-2) { push (@t, shift(@t)); next if ($t[0] == 0); my $s = join("", @t); if (!is_prime($s)) { $b = 0; } } push (@a, join("", @t)) if ($b); } say $#a+1; |