Beispiel #1
0
def ID050():
    limit = 1000000
    primes = EulerFuncs.primes_below(limit)
    check_prime = set(primes)
    
    p_sums = [0]
    s = 0
    # Sum of consecutive primes
    for p in primes:
        s += p
        if s >= limit: break
        p_sums.append(s)
    
    longest = 0
    prime = 0
    # Checks sum of all combinations of primes that sums < limit
    for n, p_sum_small in enumerate(p_sums):
        for j, p_sum_big in enumerate(p_sums):
            num_btw = j-n
            difference = p_sum_big - p_sum_small
            # 'in' for a set is much faster than with a list
            if num_btw > longest and difference in check_prime:
                longest = num_btw
                prime = difference
    return "num consecutive: %s, prime: %s" % (longest, prime)
Beispiel #2
0
def _iterate_totient(limit):
    """Iteratively calculates the totient function
    for values under a limit
    """
    primes = EulerFuncs.primes_below(limit)
    sieve = [n for n in xrange(limit)]
    
    for p in primes:
        mult = p
        while mult < limit:
            sieve[mult] *= (1-1/float(p))
            mult += p
    return sieve
Beispiel #3
0
def ID038():
    n = 9182
    stop = 10000
    limit = 1000000000
    largest = 918273645
    for n in xrange(n, stop):
        product_concat = str(n)
        n = 2
        while 1:
            product = n * n
            n += 1
            if int(product_concat + str(product)) > limit:
                break
            product_concat += str(product)
        if int(product_concat) > largest and EulerFuncs.is_pandigital(product_concat):
            largest = int(product_concat)
    return largest
def test_pandigital():
    print EulerFuncs.is_pandigital(12345678)
    print EulerFuncs.is_pandigital(123456789)
    print EulerFuncs.is_pandigital(1234567890)
    print EulerFuncs.is_pandigital(203456789)
    print EulerFuncs.is_pandigital(234567189)
'''
Created on Jan 8, 2012

@author: Admin
'''

import EulerFuncs
import timeit

def test_sieve_time():
    TRIALS = 20
    t = timeit.Timer("EulerFuncs.primes_below(1000000)", "import EulerFuncs")
    print "Own: %.4f s/pass" % (t.timeit(number=TRIALS)/TRIALS)
    t = timeit.Timer("EulerFuncs.primes_under(1000000)", "import EulerFuncs")
    print "Old: %.4f s/pass" % (t.timeit(number=TRIALS)/TRIALS)
    
def test_pandigital():
    print EulerFuncs.is_pandigital(12345678)
    print EulerFuncs.is_pandigital(123456789)
    print EulerFuncs.is_pandigital(1234567890)
    print EulerFuncs.is_pandigital(203456789)
    print EulerFuncs.is_pandigital(234567189)

if __name__ == "__main__":
    print sum(EulerFuncs.primes_below(1000)[3:24])
    print EulerFuncs.primes_below(1000)[23]
Beispiel #6
0
#!/usr/bin/env python
# date: Apr 23, 2012

import EulerFuncs
import itertools

def str_permute(s):
    perms = list(itertools.permutations(s))
    for i in xrange(len(perms)):
        perms[i] = "".join(str(i) for i in perms[i])
    return perms

# find primes 1000 <= primes < 10000
limit = 10000
primes = EulerFuncs.primes_below(limit)
primes = primes[primes.index(1009):]
primes_set = set(primes)

for i in xrange(len(primes)):
    for j in xrange(i+1, len(primes)):
        prime1 = primes[i]
        prime2 = primes[j]
        diff = prime2 - prime1
        prime3 = prime2 + diff
        # check if prime3 is prime
        if prime3 in primes_set:
            prime1_perm = str_permute(str(prime1))
            # check if the three numbers are permutations of one another
            if str(prime2) in prime1_perm and str(prime3) in prime1_perm:
                print prime1, prime2, prime3