Example #1
0
sys	0m0.036s
"""

def is_permutation(p, q):
    p = str(p)
    q = str(q)
    pc = [0]*10
    for c in p:
        pc[int(c)] += 1
    qc = [0]*10
    for c in q:
        qc[int(c)] += 1

    return pc == qc

primes = [p for p in get_primes(10**4) if p > 1000]
for i in xrange(len(primes)):
    for j in xrange(i+1, len(primes)):
        diff = primes[j] - primes[i]
        if is_permutation(primes[i], primes[j]):
            for k in xrange(j+1, len(primes)):
                diff2 = primes[k] - primes[j]
                if diff2 > diff:
                    break
                elif diff2 == diff and is_permutation(primes[j], primes[k]):
                    N = ''.join(map(str, [primes[i], primes[j], primes[k]]))
                    if N == '148748178147':
                        continue
                    print 'Answer to problem 49:', N
                    exit()
Example #2
0
#!/usr/bin/python

# Euler Project Problem 27
from eulertools import get_primes

"""Benchmark
Intel Core2 Duo CPU P8400  @ 2.26GHz 
real    0m12.114s
user    0m12.089s
sys 0m0.012s
"""

primes = get_primes(1000)
S = 0
N = 0
for a in xrange(-999, 1000):
    for b in xrange(-999, 1000):
        n = 0
        while n**2+a*n+b in primes:
            n += 1
        if n > N:
            N = n
            S = a*b

print 'Answer to problem 27:', S

Example #3
0
#!/usr/bin/python

# Euler Project Problem 37

"""Benchmark
Intel Core2 Duo CPU P8400  @ 2.26GHz 
real	0m0.761s
user	0m0.736s
sys	0m0.024s
"""
from eulertools import get_sieve, get_primes

sieve  = get_sieve(10**6)
primes = get_primes(10**6)
del primes[0:4]

res = 0
for p in primes:
    for i in xrange(0, len(str(p))):
        if not sieve[int(str(p)[i:])]:
            truncatable_prime = False
            break
        if not sieve[int(str(p)[:i+1])]:
            truncatable_prime = False
            break
        truncatable_prime = True
    if truncatable_prime:
        res += p

print 'Answer to problem 37:', res