from typing import List


from ..library.sqrt import fsqrt
from ..library.number_theory.primes import is_prime, prime_sieve


def is_circular_prime(n: int, sieve: List[int]) -> bool:
    for i in range(len(str(n))):
        if not is_prime(int(str(n)[i:] + str(n)[:i]), sieve):
            return False

    print(n)

    return True


def solve(digits: int=6) -> int:
    bound = 10 ** digits
    sieve = prime_sieve(fsqrt(bound))

    return sum(1 for prime in range(bound) if is_circular_prime(prime, sieve))

@@ -18,17 +18,74 @@
 t List%0A%0A
+from ..library.base import number_to_list, list_to_number
 %0A
-
 from ..l
@@ -233,16 +233,47 @@
 %3E bool:%0A
+    rep_n = number_to_list(n)%0A%0A
     for 
@@ -287,22 +287,21 @@
 nge(len(
-str(n)
+rep_n
 )):%0A    
@@ -324,31 +324,40 @@
 ime(
-int(str(n)
+list_to_number(rep_n
 %5Bi:%5D + 
-str(n)
+rep_n
 %5B:i%5D
@@ -558,22 +558,40 @@
 n range(
+1, 
 bound)
+%0A              
  if is_c

Make 35 use number_to_list and inverse