示例#1
0
def find_largest_pandigital_prime(numbers: list):
    """
    We shall say that an n-digit number is
    pandigital if it makes use of all
    the digits 1 to n exactly once.

    For example, 2143 is a 4-digit pandigital and is also prime.
    What is the largest n-digit pandigital prime that exists?

    :param numbers:
    :param number:
    :return:
    """

    start_time = time.time()
    permutations = list(
        int(''.join(t))
        for t in itertools.permutations(str(t)
                                        for t in numbers))

    big_pandigital_primes = set()
    for n in permutations:
        if is_pandigital(n) and is_prime(n):
            big_pandigital_primes.add(n)

    result = max(big_pandigital_primes)
    print_time_log(start_time, result)
    return result
示例#2
0
def pandigital_prime(n):
    """
    We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once.
    For example, 2143 is a 4-digit pandigital and is also prime.

    What is the largest n-digit pandigital prime that exists?
    """
    max = 10**n
    sieve = utils.sieve_of_eratosthenes(max)
    primes = [x for x in range(0, max) if sieve[x]]
    pandigitals = [x for x in primes if utils.is_pandigital(x)]
    return pandigitals[-1]
示例#3
0
文件: test_utils.py 项目: giall/euler
 def test_should_return_false(self):
     self.assertFalse(utils.is_pandigital(41234))
示例#4
0
文件: test_utils.py 项目: giall/euler
 def test_should_return_true(self):
     self.assertTrue(utils.is_pandigital(41235))
示例#5
0
 def test_is_pandigital_large_false(self):
     self.assertFalse(is_pandigital(10523456978))
示例#6
0
 def test_is_pandigital_large_true(self):
     self.assertTrue(is_pandigital(1023456978))
示例#7
0
 def test_is_pandigital_false(self):
     self.assertFalse(is_pandigital(15224))
示例#8
0
 def test_is_pandigital_true(self):
     self.assertTrue(is_pandigital(15234))