Ejemplo n.º 1
0
def problem35():
    """ Circular primes
    How many circular primes are there below one million?

    """
    return_value = 0
    for prime in mathhelper.prime_list(999999):
        prime_digits = list(str(prime))

        rotate_list = collections.deque(prime_digits)
        rotate_list_length = len(rotate_list)
        if rotate_list_length == 1:
            return_value += 1
            continue

        if len({"0", "2", "4", "5", "6", "8"}.intersection(prime_digits)) > 0:
            continue

        for rotate in range(1, rotate_list_length):
            rotate_list.rotate(1)
            if not mathhelper.is_prime(mathhelper.create_number(rotate_list)):
                break

            if rotate + 1 == rotate_list_length:
                return_value += 1

    return return_value
Ejemplo n.º 2
0
def problem41():
    """ Pandigital prime
    What is the largest n-digit pandigital prime that exists?

    """
    for prime in mathhelper.prime_list(7654321, reverse=True):
        if mathhelper.is_pandigital(prime):
            return prime
Ejemplo n.º 3
0
def problem50():
    """ Consecutive prime sum
    Which prime, below one-million, can be written as the sum of the most consecutive primes?

    """

    max_index = 0
    biggest_prime = 0
    for start in mathhelper.prime_list(1000000, reverse=True):
        sum_primes = 0
        for index, prime in enumerate(mathhelper.prime_list(start, reverse=True)):
            if sum_primes > 1000000:
                break

            sum_primes += prime

            if max_index < index and mathhelper.is_prime(sum_primes):
                max_index = index
                biggest_prime = sum_primes

    return biggest_prime
Ejemplo n.º 4
0
def problem37():
    """ Truncatable primes
    Find the sum of the only eleven primes
    that are both truncatable from left to right and right to left.

    """
    found_item = 0
    return_value = 0
    for prime in mathhelper.prime_list(None):
        if prime < 10:
            continue

        prime_text = str(prime)
        for truncate in range(1, len(prime_text)):
            left_part = int(prime_text[:(-1 * truncate)])
            right_part = int(prime_text[truncate:])
            if not mathhelper.is_prime(left_part) or not mathhelper.is_prime(right_part):
                break
            if truncate + 1 == len(prime_text):
                return_value += prime
                found_item += 1

        if found_item == 11:
            return return_value
Ejemplo n.º 5
0
 def test_prime_list(self):
     self.assertEqual(list(mathhelper.prime_list(-5)), [])
     self.assertEqual(list(mathhelper.prime_list(-1)), [])
     self.assertEqual(list(mathhelper.prime_list(0)), [])
     self.assertEqual(list(mathhelper.prime_list(1)), [])
     self.assertEqual(list(mathhelper.prime_list(2)), [2])
     self.assertEqual(list(mathhelper.prime_list(3)), [2, 3])
     self.assertEqual(list(mathhelper.prime_list(10)), [2, 3, 5, 7])
     self.assertEqual(list(mathhelper.prime_list(17)), [2, 3, 5, 7, 11, 13, 17])
     self.assertEqual(list(mathhelper.prime_list(18)), [2, 3, 5, 7, 11, 13, 17])
     self.assertEqual(list(mathhelper.prime_list(19)), [2, 3, 5, 7, 11, 13, 17, 19])
     self.assertEqual(list(mathhelper.prime_list(20)), [2, 3, 5, 7, 11, 13, 17, 19])
     self.assertEqual(list(mathhelper.prime_list(21)), [2, 3, 5, 7, 11, 13, 17, 19])
     self.assertEqual(list(mathhelper.prime_list(22)), [2, 3, 5, 7, 11, 13, 17, 19])
     self.assertEqual(list(mathhelper.prime_list(23)), [2, 3, 5, 7, 11, 13, 17, 19, 23])
     self.assertEqual(list(mathhelper.prime_list(24)), [2, 3, 5, 7, 11, 13, 17, 19, 23])
     self.assertEqual(list(mathhelper.prime_list(-5, True)), [])
     self.assertEqual(list(mathhelper.prime_list(-1, True)), [])
     self.assertEqual(list(mathhelper.prime_list(0, True)), [])
     self.assertEqual(list(mathhelper.prime_list(1, True)), [])
     self.assertEqual(list(mathhelper.prime_list(2, True)), [2])
     self.assertEqual(list(mathhelper.prime_list(3, True)), [3, 2])
     self.assertEqual(list(mathhelper.prime_list(10, True)), [7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(17, True)), [17, 13, 11, 7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(18, True)), [17, 13, 11, 7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(19, True)), [19, 17, 13, 11, 7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(20, True)), [19, 17, 13, 11, 7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(21, True)), [19, 17, 13, 11, 7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(22, True)), [19, 17, 13, 11, 7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(23, True)), [23, 19, 17, 13, 11, 7, 5, 3, 2])
     self.assertEqual(list(mathhelper.prime_list(24, True)), [23, 19, 17, 13, 11, 7, 5, 3, 2])