def trucate(n):
     if not isprime(n):
         return False
     _strn = str(n)
     for i in range(len(_strn) - 1):
         if not(isprime(int(_strn[0:-1 - i])) and isprime(int(_strn[i + 1:]))):
             return False
     return True
def problem41():
    _prm = [i for i in range(3, 50, 2) if isprime(i)]
    _flg = False
    for i in range(7654321, 1234567, -2):
        if not ispandigital(i, 8):
            continue
        if (isprime(i)):
            print("PRIME:", i)
            break;
def problem10():
    _sum = 2
    for i in range(3, 2 * 1000 * 1000, 2):
        if isprime(i):
            _sum += i
        #    print(i)
    print(_sum)
def problem7(): # a bit slow, but correct
    count = 2
    i = 3
    while count != 10001:
        i += 2
        if isprime(i):
            count += 1
    print("count: {0}, i:{1}.".format(count, i))
def problem35():
    _n = 1000 * 1000
    _count = 0
    for i in range(_n):
        is_rotations_prime = True
        for j in rotations(i):
            if not isprime(j):
                is_rotations_prime = False
                break;
        if (is_rotations_prime == True):
            _count += 1
    print(_count)
def problem3(): # correct
    n = 600851475143
    for i in range(int(n**0.5), 2, -1):
        if (n % i == 0) and (isprime(i)):
            print("that's {0}.".format(i))
            break