import
java.util.ArrayList;
import
java.util.List;
public
class
CircularPrimes {
static
void
generatePrimes(
int
n, List<Integer> primes) {
boolean
[] isPrime =
new
boolean
[n +
1
];
for
(
int
i =
0
; i <= n; i++) {
isPrime[i] =
true
;
}
isPrime[
0
] = isPrime[
1
] =
false
;
for
(
int
i =
2
; i <= Math.sqrt(n); i++) {
if
(isPrime[i]) {
for
(
int
j = i * i; j <= n; j += i) {
isPrime[j] =
false
;
}
}
}
for
(
int
i =
2
; i <= n; i++) {
if
(isPrime[i]) {
primes.add(i);
}
}
}
static
boolean
isCircularPrime(
int
n, List<Integer> primes) {
String num = Integer.toString(n);
for
(
int
i =
0
; i < num.length(); i++) {
num = num.substring(
1
) + num.charAt(
0
);
int
rotatedNum = Integer.parseInt(num);
if
(!primes.contains(rotatedNum)) {
return
false
;
}
}
return
true
;
}
static
void
circularPrimes(
int
n) {
List<Integer> primes =
new
ArrayList<>();
generatePrimes(n, primes);
for
(
int
prime : primes) {
if
(isCircularPrime(prime, primes)) {
System.out.print(prime +
" "
);
}
}
}
public
static
void
main(String[] args) {
int
n =
100
;
circularPrimes(n);
}
}