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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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]
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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)
Beispiel #12
0
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
Beispiel #15
0
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)
Beispiel #16
0
# 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
Beispiel #20
0
def sum_prime(num):
    result = 2
    for i in range(3, num, 2):
        if is_prime(i):
            result += i
    return result