Example #1
0
def is_prime_permute(n):
    perms = [int(''.join(x)) for x in list(it.permutations(str(n), 4))]
    perms = list(set(perms))
    perms_prime = [x for x in perms if fns.is_prime(x)]
    perms_diff = [[abs(x - y) for x in perms_prime] for y in perms_prime]
    perms_diff_count = [is_multi_count(x) for x in perms_diff]
    return any(perms_diff_count)
Example #2
0
def nth_prime(n):
    prime_counter = 2
    num_counter = 5
    while 1 > 0:
        if fns.is_prime(num_counter):
            prime_counter += 1
        if prime_counter == n:
            return num_counter
        num_counter += 2
Example #3
0
# 8. n consecutive numbers with higest product
n = 13
long_number = '7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450'
products = []
for i in xrange(n - 1, len(long_number)):
    products.append(reduce(lambda x, y: int(x) * int(y), long_number[(i - n + 1):(i + 1)]))
print "Euler 8:", max(products),
print "T:", time() - start; start = time()

# 9. Pythagoeran triplet summing to 1000
n = 1000
for a in xrange(2, int(n/3)):
    for b in xrange(2, n):
        c = n - a - b
        if (a*a + b*b == c*c):
            output = a, b, c
            break

print "Euler 9:", output[0] * output[1] * output[2],
print "T:", time() - start; start = time()

# 10. Sum of all primes below n
n = int(2e6)
prime_sum = 2
for i in xrange(3, n, 2):
    if fns.is_prime(i):
        prime_sum += i

print "Euler 10:", prime_sum,
print "T:", time() - start; start = time()
Example #4
0
    if int(i[6:9]) % 13 != 0: continue
    if int(i[7:10]) % 17 != 0:continue
    all_nums.append(int(i))

print "Euler 43:", sum(all_nums),
print "T:", time.time() - start; start = time.time()

# Triangle numbers

def word_val_sum(word): return sum([ord(x) - ord("A") + 1 for x in word])

def gen_triangle_numbers(n): return [i * (i + 1) / 2 for i in xrange(1,n)]

word_list = str.replace(open("../Data/Interesting/euler/42.txt", 'r').read(), '"', '').split(',')
word_values = map(word_val_sum, word_list)
triangle_numbers = gen_triangle_numbers(50)
triangles_in_list = [x for x in word_values if x in triangle_numbers]

print "Euler 42:", len(triangles_in_list),
print "T:", time.time() - start; start = time.time()

# Largest Pandigital prime

for i in xrange(7654321, 0, -1):
    if "".join(sorted(str(i))) == "1234567":
        if(fns.is_prime(i)):
            break

print "Euler 41:", i,
print "T:", time.time() - start; start = time.time()
Example #5
0
        if len(mult_sum) >= 9:
            if "".join(sorted(mult_sum)) ==  '123456789':
                all_pans.append(int(mult_sum))
            break
        j += 1

print "Euler 38:", max(all_pans),
print "T:", time.time() - start; start = time.time()

# Truncatable primes
perms = ['1', '3', '5', '7', '9']
trunc_primes = [23]
k = 2
while len(trunc_primes) < 11:
    all_candidates = [int(''.join(p)) for p in product(perms, repeat = k)]
    all_candidates = [j for j in all_candidates if fns.is_prime(j) == True]
    for i in all_candidates:
        all_facts = [str(i)[:j] for j in range(1, len(str(i)))]
        all_facts = [str(i)[j:] for j in range(1, len(str(i)))] + all_facts
        all_prime = all([fns.is_prime(int(j)) for j in all_facts])
        if all_prime: trunc_primes.append(i)
    k = k + 1

print "Euler 37:", sum(trunc_primes),
print "T:", time.time() - start; start = time.time()

# bin-dec palindromes

nmax = 1000000; all_pal = []

def is_palindrome(x):
Example #6
0
def find_odd_comps(nmax):
    all_comps = []
    for i in xrange(3, nmax, 2):
        if(not fns.is_prime(i)):
            all_comps.append(i)
    return all_comps
Example #7
0
import fnsEuler as fns
import pandas
import numpy as np
import itertools as it
from itertools import product
import time
import math
from collections import Counter

start = time.time()

# Longest list of primes
nmax = 1000000
primes = [2] + [x for x in xrange(3, nmax/int(math.log(nmax)), 2) if fns.is_prime(x)]

max_length = 0

for i in xrange(len(primes)):
    for j in xrange(i, len(primes)):
        current_sum = sum(primes[i:j])
        if current_sum > nmax: break
        current_length = j - i
        if max_length >= current_length: continue
        if fns.is_prime(current_sum) and current_length > max_length:
            max_length = current_length
            max_sum = current_sum

print "Euler 50:", max_sum,
print "T:", time.time() - start; start = time.time()
Example #8
0
# 28. Number diagonals
n = 501
tot = 1
current_set = [1]
for i in range(2, n+1):
    current_set = range(current_set[-1] + 2 * (i-1), current_set[-1] + (2 * (i-1)) * 5, 2 * (i-1))
    tot += sum(current_set)

print "Euler 28:", tot,
print "T:", time.time() - start; start = time.time()

# 27. Quadratic primes
amax = bmax = 999

b_series = [i for i in range(-amax, amax, 2) if fns.is_prime(abs(i))]

nmax = 0; best_team = [0, 0]
for a in range(-bmax, bmax, 2):
    for b in b_series:
        n = 0
        while (fns.is_prime(abs(n * n + a * n + b))):
            if n > nmax:
                nmax = n
                best_team = [a, b, n]
            n += 1

print "Euler 27:", best_team, best_team[0] * best_team[1],
print "T:", time.time() - start; start = time.time()

# 30. Fifth digit powers
Example #9
0
def is_prime_couple(a, b):
    if fns.is_prime(int(str(a) + str(b))) and fns.is_prime(int(str(b) + str(a))):
        return True
    return False
Example #10
0
import fnsEuler as fns
import numpy as np
import itertools as it
from itertools import product
import time
import math
from collections import Counter
import sys

start = time.time()

# Prime pair sets
nmax = 10000
primes_list = [x for x in xrange(1, nmax, 2) if fns.is_prime(x)]
primes_set = set(primes_list)

def is_prime_couple(a, b):
    if fns.is_prime(int(str(a) + str(b))) and fns.is_prime(int(str(b) + str(a))):
        return True
    return False

prime_pair_hash = {}
for p in primes_set:
    current_set = set()
    for p1 in primes_set:
        if p1 < p: continue
        if is_prime_couple(p, p1):
            current_set.add(p1)
    prime_pair_hash[p] = current_set