Ejemplo n.º 1
0
def is_truncatable_prime(number):
    if not is_prime(number):
        return False

    number_string = str(number)
    number_length = len(number_string)

    if number_length < 2:
        return False

    for i in range(1, number_length):
        if (not is_prime(int(number_string[i:]))
                or not is_prime(int(number_string[:i]))):
            return False
    return True
Ejemplo n.º 2
0
def nth_prime_number(number):
    count = 0
    n = 1
    while count < number:
        n += 1
        if is_prime(n):
            count += 1
    return n
Ejemplo n.º 3
0
def spiral_primes_at_ratio(ratio):
    length = 1
    diagonal_number = 1
    diagonal_primes = 0

    while length == 1 or diagonal_primes / ((2 * length) - 1) > ratio:
        length += 2
        for _ in range(4):
            diagonal_number += length - 1
            if is_prime(diagonal_number):
                diagonal_primes += 1

    return length
Ejemplo n.º 4
0
def maximum_quadratic_primes(maximum):
    minimum = -maximum
    result = (0, 0)
    maximum_consecutive_primes = 0
    for a in range(minimum + 1, maximum):
        for b in range(max(0, 1 - a), maximum + 1):
            n = 0
            while is_prime(n**2 + (a * n) + b):
                n += 1
                if n > maximum_consecutive_primes:
                    result = (a, b)
                    maximum_consecutive_primes = n
    return result
Ejemplo n.º 5
0
def smallest_non_goldbach_number():
    primes = [2]
    n = 1
    while True:
        n += 2
        if is_prime(n):
            primes.append(n)
        else:
            is_goldbach = False
            for p in primes:
                if sqrt((n - p) / 2).is_integer():
                    is_goldbach = True
                    break
            if not is_goldbach:
                return n
Ejemplo n.º 6
0
def prime_digit_replacement_family(family_size):
    primality_map = {}
    number = 0

    while True:
        number_string = str(number)
        digit_counts = sorted(
            [(int(digit), len(list(group)))
             for (digit, group) in groupby(number_string)],
            key=itemgetter(1),
            reverse=True,
        )

        largest_count = digit_counts[0][1]

        digits_to_replace = (digit_count[0] for digit_count in digit_counts
                             if digit_count[1] == largest_count)

        for digit in digits_to_replace:
            family = (int(''.join(
                [str(n) if int(d) == digit else d for d in number_string]))
                      for n in range(10))
            family_primality_pre_check = (
                p for p in family
                if p not in primality_map or primality_map[p])
            family_primality = [(n, is_prime(n))
                                for n in family_primality_pre_check
                                if len(str(n)) == len(number_string)]
            prime_family = [n[0] for n in family_primality if n[1]]

            for (n, primality) in family_primality:
                primality_map[n] = primality

            if len(prime_family) >= family_size:
                return prime_family

        number += 1