def is_prime_pair(prime1, prime2): prime1 = str(prime1) prime2 = str(prime2) if is_prime(int(prime1 + prime2)) and is_prime(int(prime2 + prime1)): return True else: return False
def truncate_prime(num): num = str(num) for i in range(len(num)): if not is_prime(int(num[i:])): return False for i in range(len(num), 0, -1): if not is_prime(int(num[:i])): return False return True
def check_num(num): num = str(num) for x in range(0, len(num)): left = num[x:len(num)] right = num[0:x + 1] if not is_prime(int(left)) or not is_prime(int(right)): return False return True
def find_circular_primes(): # Start a 1 due to the edge case of 2 being prime total = 1 for x in range(3, 1000000, 2): if is_prime(x): rotations = convert_to_rotations(x) total += 1 if len([y for y in rotations if is_prime(int(y))]) == len(rotations) else 0 return total
def is_circular_prime(num): num = str(num) length = len(num) for i in range(length): if not is_prime(int(num[i:]+num[:i])): return False return True
def find_prime(num): prime_list = [] n = 1 while (len(prime_list) != num): n += 1 if is_prime(n): prime_list.append(n) return prime_list[-1]
def truncatable_from_left(prime): prime = str(prime) for i in range(len(prime)): if is_prime(int(prime[i:])): continue else: return False return True
def truncatable_from_right(prime): prime = str(prime) for i in range(len(prime), 0, -1): if is_prime(int(prime[:i])): continue else: return False return True
def is_circular_prime(n): p = 2 * str(n) for i in range(len(str(n))): new_prime = p[i:i + len(str(n))] if is_prime(int(new_prime)): continue else: return False return True
def find_pandigital_prime(): largest = 0 for x in range(1, 10): string = ''.join([str(y) for y in range(1, x + 1)]) perms = [int(''.join(z)) for z in permutations(string)] for p in perms: if p > largest and is_prime(p): largest = p return largest
def find_truncatable_primes(): primes = [] # Primes below 7 aren't included so start from the next odd number step = 9 while len(primes) < 11: if is_prime(step) and check_num(step): primes.append(step) step += 2 return sum(primes)
def consecutive_sum(limit): primes = get_primes(limit) most_number_elements = 0 for i in tqdm(range(len(primes))): new_primes = primes[i:] for j in range(len(new_primes)): no_elements = len(new_primes[:j]) prime_sum = sum(new_primes[:j]) if prime_sum >= limit: break if no_elements > most_number_elements and is_prime(prime_sum): most_number_elements = no_elements highest_prime_sum = prime_sum return highest_prime_sum, most_number_elements
# coding: utf-8 # 050_consecutive_prime_sum.py from lib.primes import is_prime primes = [] for i in range(2, 1000000): if is_prime(i): primes.append(i) records = {} n = 0 p = 1 while (n + p < len(primes)): # print(n+p) total = 0 length = 0 key_list = list(records.keys()) for i in range(p): total += primes[n + i] length += 1 if total < 1000000: p += 1 if is_prime(total): if length in key_list: if records[length] < total: records[length] = total else:
# coding: utf-8 # 058_spiral_primes.py from lib.primes import is_prime spiral_list = [1] n = 1 plus = 2 i = 0 count = 0 while (True): value = spiral_list[i] + plus spiral_list.append(value) i += 1 if i % 4 == 0: for num in spiral_list[-4:]: if is_prime(num): count += 1 result = count / i print(result) if result >= 0.1: n += 2 plus += 2 else: print(n) break
def get_prime_length(a, b): n, consequtive = 0, list() while is_prime(quadratic_expression(n, a, b)): consequtive.append(n) n += 1 return len(consequtive)
# coding: utf-8 # 005_smallest_multiple.py from lib.primes import is_prime x = 1 for i in range(2, 21): if is_prime(i): x *= i def find_smallest(num): for i in range(1, 21): if num % i != 0: return False return True x += 10 # u'20으로 나누어 지려면 끝 자리가 20이여야 하기때문 x=9699690 while (True): # print(x) if find_smallest(x): print(x) break else: x += 20
# coding: utf-8 # 069_totient_maximum.py # 수학&코딩 블로그 참조.... from lib.primes import is_prime primes_list = [i for i in range(2, 101) if is_prime(i)] n = 1 for x in range(len(primes_list)): n *= primes_list[x] if n > 1000000: break print(n)
# coding: utf-8 # 070_totient_permutation.py from lib.primes import is_prime from lib.totient import phi def is_permutation(num1, num2): return sorted(list(str(num1))) == sorted(list(str(num2))) n = 9999999 while (True): print(n) if is_prime(n) and is_permutation(phi(n), n): print(n) break n -= 1
# coding: utf-8 # pandigital_prime.py from itertools import permutations from lib.primes import is_prime def make_pandigital(num): l = [i for i in range(1, num + 1)] permut_list = list(permutations(l, )) result_list = [] for permutation in permut_list: string = '' for num in permutation: string += str(num) result_list.append(int(string)) return result_list pandigital_list = make_pandigital(7) pandigital_list.sort() pandigital_list.reverse() for pandigital in pandigital_list: if is_prime(pandigital): print(pandigital) break
def sum_prime(num): result = 2 for i in range(3, num, 2): if is_prime(i): result += i return result