Exemple #1
0
def p123_nice():
    primes = prime_sieve(1000000)
    for n in range(7038, len(primes), 2):
        print([n], 2 * (n + 1) * primes[n])
        if 2 * (n + 1) * primes[n] > pow(10, 10):
            print(n + 1)
            break
Exemple #2
0
def p127():  # Answer 18407904, 17 min....Orz
    sum_c = 0
    L = 120000
    primes = prime_sieve(L)
    lrad = [0] * L
    for a in range(1, L // 2):
        if lrad[a] == 0:
            lrad[a] = rad(a)
        if a % 2 == 0:
            inc = 2
        else:
            inc = 1
        for b in range(a + 1, L - 1, inc):
            if lrad[b] == 0:
                lrad[b] = rad(b)
            c = a + b
            if c >= L:
                break
            if lrad[c] == 0:
                lrad[c] = rad(c)
            if (lrad[a] * lrad[b] * lrad[c]) >= c:
                continue
            if p127_check(a, b, c, primes):
                print(a, b, c)
                sum_c += c

    print(sum_c)
    return
Exemple #3
0
def p132_nice():
    primes = prime_sieve(10**6)
    base = 10
    exp = 10**9
    result = sum(
        islice((p for p in primes if modular_pow(base, exp, 9 * p) == 1), 0,
               40))
    print("The result is:", result)
Exemple #4
0
def p133():  # Answer: 453647705
    primes = prime_sieve(100000)
    base = 10
    for e in range(1, 20):
        exp = 10**e
        for p in primes:
            if modular_pow(base, exp, 9 * p) == 1:
                primes.remove(p)
    print(sum(primes[0:100000]))
    return
Exemple #5
0
def p187():
    cnt = 0
    primes = prime_sieve(49999992)
    lp = len(primes)
    for i in range(0, lp - 1):
        for j in range(i, lp):
            if primes[i] * primes[j] > 100000000:
                break
            # print(primes[i]* primes[j], '\t', primes[i], primes[j])
            cnt += 1
    print(cnt)
    return
Exemple #6
0
def p132():
    primes = prime_sieve(10**6)
    base = 10
    exp = 10**9
    cnt = 0
    s = 0
    for p in primes:
        if modular_pow(base, exp, 9 * p) == 1:
            s += p
            cnt += 1
            if cnt == 40:
                break
    print(s)
Exemple #7
0
def p123():  # Answer 21035
    primes = prime_sieve(1000000)
    for i in range(7038, len(primes), 2):
        n = i + 1
        p = primes[i]
        s = (p - 1)**n + (p + 1)**n
        p2 = p**2
        r = s % p2
        print([n], r)
        if len(str(r)) > 10:
            print(n)
            break
    return
Exemple #8
0
def p131_slow():  # Answer: 173, 68.54s  Mac pro 2016
    cnt = 0
    primes = prime_sieve(1000000)
    for p in primes:
        for i in count(1):
            n = i**3
            if is_perfect_cube(n + p):
                if is_perfect_cube(n**2):
                    # print('[great] ', [p, n, i], n**2, n+p)
                    cnt += 1
                    break
            if i > 600:
                break
    print(cnt)
Exemple #9
0
def p134():  # 18613426663617118, 2sec < run time
    total = 0
    L = 1000000
    primes = prime_sieve(L + 50)
    for i in range(2, len(primes) - 1):
        p1 = primes[i]
        if p1 >= L:
            break
        p2 = primes[i + 1]
        k = 1
        while k < p1:
            k *= 10
        small_n = congruence(p2, p1, k)
        total += (small_n * p2)
    print(total)
Exemple #10
0
def p200_slow():
    res = []
    primes = prime_sieve(400000)
    for p1 in primes:
        for p2 in primes:
            if p1 == p2:
                continue
            sqube = p2q3(p1, p2)
            if sqube > 7999728002312:
                break
            str_sqube = str(sqube)
            if str_sqube.find('200') >= 0:
                if prime_proof(str_sqube):
                    print(p1, p2, sqube)
                    res.append(sqube)

    res = sorted(res)
    print(res[199])
    return
Exemple #11
0
def p200():  # 229161792008, 6.12sec
    res = []
    primes = prime_sieve(200000)
    for p1 in primes:
        for p2 in primes:
            if p1 == p2:
                continue
            sqube = p2q3(p1, p2)
            if sqube > 7999728002312:
                break
            if sqube % 2 != 0 and sqube % 5 != 0:
                continue
            str_sqube = str(sqube)
            if str_sqube.find('200') >= 0:
                if prime_proof(str_sqube):
                    print(p1, p2, sqube)
                    res.append(sqube)

    res = sorted(res)
    print(res[199])
    return
Exemple #12
0
def solution():
    sieve = prime_sieve(1000000)
    return len([n for n in range(2, 1000000) if is_circular_prime(n, sieve)])
"""
Project Euler 35: Find the number of circular primes below one million
"""

from re import search
import util

L = 1000000

#return a list of rotations for string s
def rotate(s):
    return [s[n:] + s[:n] for n in range(1, len(s))]

#make a set of primes < L and remove any that have {0,2,4,5,6,8} except 2 and 5
primes = set(['2','5']+[str(p) for p in util.prime_sieve(L) if not search('[024568]', str(p))])

for p in primes:
	if all(pr in primes for pr in rotate(p)):
		print p


n_circular_primes = sum(all(pr in primes for pr in rotate(p)) for p in primes)
print "Project Euler 35 Solution =", n_circular_primes

Exemple #14
0
#!/usr/bin/python

import psyco
import util

primes = util.prime_sieve(3000)

def consecutive_primes(a, b):
    num = 0
    x = 0
    while True:
        y = x ** 2 + a * x + b
        if y in primes:
            num += 1
        else:
            break
        x += 1
    return num

if __name__ == "__main__":
    max = 0
    max_coeffs = None
    for a in range(1000):
        for b in range(1000):
            if b not in primes:
                continue
            num = consecutive_primes( a, b)
            if num > max:
                max = num
                max_coeffs = (a,b)
            num = consecutive_primes(-a, b)
def solution():
    sieve = prime_sieve(1000000)
    return sum([n for n in range(10,1000000) if is_truncatable_prime(n, sieve)])
Exemple #16
0
import util

pi = 2000000

primes = util.prime_sieve(pi)
psum = sum(primes)
print(psum)

Exemple #17
0
import psyco
import util

primes = util.prime_sieve(1000000)

sum = 0
for i in range(2, 1000001):
    sum += util.totient(i, primes)

print sum
Exemple #18
0
def solution():
    sieve = prime_sieve(1000000)
    return sum(
        [n for n in range(10, 1000000) if is_truncatable_prime(n, sieve)])
"""Project Euler 7: Find the 10001st prime number
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

What is the 10001st prime number?"""

import util

n = 10000
primes_list = util.prime_sieve(110000)
print primes[n]

Exemple #20
0
import util
import math

n = 10001

pi_block = 1000

# the PNT gives us a decent first guess to sieve through.
pi = int(n * math.log(n))

primes = util.prime_sieve(n)

while len(primes) < n:
    pi += pi_block
    primes = util.findprimes(pi, primes)

print(primes[n-1])