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
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
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)
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
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
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)
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
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)
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)
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
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
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
#!/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)])
import util pi = 2000000 primes = util.prime_sieve(pi) psum = sum(primes) print(psum)
import psyco import util primes = util.prime_sieve(1000000) sum = 0 for i in range(2, 1000001): sum += util.totient(i, primes) print sum
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]
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])