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
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
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 []
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 []
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