Пример #1
0
Файл: p06x.py Проект: jpaeng/PE
def check_prime_concatenations(prime1, prime2, prime_list):
    str_prime1 = str(prime1)
    str_prime2 = str(prime2)

    status = True
    prime_cat = int(str_prime1 + str_prime2)
    if not common.is_in_ordered_list(prime_cat, prime_list):
        status = False

    prime_cat = int(str_prime2 + str_prime1)
    if not common.is_in_ordered_list(prime_cat, prime_list):
        status = False

    return status
Пример #2
0
Файл: p03x.py Проект: jpaeng/PE
def is_circular_prime(n, prime_list):
    """ Return True if n is circular prime or False if n is not circular prime."""
    strn = str(n)
    if len(strn) > 1:
        for i in range(1, len(strn)):
            strni = strn[i:] + strn[:i]
            # if int(strni) not in prime_list:
            if not common.is_in_ordered_list(int(strni), prime_list):
                return False
    return True
Пример #3
0
Файл: p03x.py Проект: jpaeng/PE
def next_left_extend_prime(str_n, prime_list):
    """Recursive return list of primes created by adding digits to the left. Stop if added digit creates non-prime."""
    usable_digits = ('1', '2', '3', '5', '7', '9')  # will not generate complete list of primes - just those reducible to single digit primes.
    n = int(str_n)
    if common.is_in_ordered_list(n, prime_list):
        primes = [n]
        for p in usable_digits:
            primes.extend(next_left_extend_prime(p+str_n, prime_list))
        return primes
    else:
        return []
Пример #4
0
Файл: p03x.py Проект: jpaeng/PE
def next_right_extend_prime(str_n, prime_list):
    """Recursive return list of primes created by adding digits to the right. Stop if added digit creates non-prime."""
    usable_digits = ('1', '3', '7', '9')    # all possible multi-digit primes must end with one of these digits
    n = int(str_n)
    if common.is_in_ordered_list(n, prime_list):
        primes = [n]
        for p in usable_digits:
            primes.extend(next_right_extend_prime(str_n+p, prime_list))
        return primes
    else:
        return []
Пример #5
0
def test_common():
    # variables
    ordered_list = list(range(-10, 10))
    prime_list_10 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

    # power_digit_sum
    common.power_digit_sum(2, 15) == 26

    # index_in_ordered_list
    assert common.index_in_ordered_list(-10, ordered_list) == ordered_list.index(-10)
    assert common.index_in_ordered_list( -1, ordered_list) == ordered_list.index(-1)
    assert common.index_in_ordered_list(  0, ordered_list) == ordered_list.index(0)
    assert common.index_in_ordered_list(  9, ordered_list) == ordered_list.index(9)
    assert common.index_in_ordered_list( 10, ordered_list) == -1
    assert common.index_in_ordered_list(-11, ordered_list) == -1

    # is_in_ordered_list
    assert common.is_in_ordered_list(-10, ordered_list)
    assert common.is_in_ordered_list( -1, ordered_list)
    assert common.is_in_ordered_list(  0, ordered_list)
    assert common.is_in_ordered_list(  9, ordered_list)
    assert common.is_in_ordered_list( 10, ordered_list) is False
    assert common.is_in_ordered_list(-11, ordered_list) is False

    assert common.str_permutation(11, '0123') == '1320'
    assert common.str_permutation(999999, '0123456789') == '2783915460'

    # get_factors
    assert common.get_factors(1) == [1]
    assert common.get_factors(16) == [1, 2, 4, 8, 16]

    # sieve_erathosthenes
    assert common.sieve_erathosthenes(30) == prime_list_10
    assert common.sieve_erathosthenes(30) != ordered_list
    assert common.sieve_erathosthenes2(30) == prime_list_10
    assert common.prime_list_mr(0, 30) == prime_list_10

    # get_prime_factors
    assert common.get_prime_factors(0, prime_list_10) == []
    assert common.get_prime_factors(2, prime_list_10) == [2]
    assert common.get_prime_factors(512, prime_list_10) == [2]
    assert common.get_prime_factors(60, prime_list_10) == [2, 3, 5]
    assert common.get_prime_factors(6469693230, prime_list_10) == prime_list_10