Beispiel #1
0
def main():
    # 10^4:     30397485
    # 10^5:   3039650753
    # 10^6: 303963552391
    limit = 1000000
    global p_list
    p_list = prime.prime_generator(limit)
    p_set = set(p_list)

    s = 0
    for i in range(2,limit+1):
        if i in p_set:
            s += (i - 1)
            continue
        t = totient(i)
        s += t
    print(s)
Beispiel #2
0
def main():
    max = 10**7 # 10^6 :: 783169
    global p_list, p_set
    p_list = prime.prime_generator(int(max//2)+1)
    p_set = set(p_list)

    min_n = 0
    min_np = 1000000.0

    for i in range(1, max+1, 2):
        f = get_semi_prime(i)
        if len(f) == 0: continue

        p = i // f[0] * (f[0] - 1) // f[1] * (f[1] - 1)
        if  is_permutation(i, p):
            np = float(i) / p
            if np <= min_np:
                min_n = i
                min_np = np
    print(min_n)
Beispiel #3
0
from euler import progress
from prime import prime_generator
import itertools as it
print "Problem 77"
primes = []
plen = 74  # good
for p in prime_generator():
    primes.append(p)
    if p > plen:
        break

from collections import Counter
c = Counter()
for i in xrange(2, plen/2+1):
    print i
    for x in it.combinations_with_replacement(primes, i):
        c[sum(x)] += 1
    try:
        print min(filter(lambda x: x[1] >=5000, c.items()))
    except:
        pass
print filter(lambda x: x[1] >= 5000, c.items())
print min(filter(lambda x: x[1] >=5000, c.items()))

#def number_comb_sum(n, primes):
#    nprimes = filter(lambda x: x < n, primes)
#    c = set()
#    for i in xrange(2, n/2 + 1):
#        c |= set(it.ifilter(lambda x: sum(x) == n,
#                 it.combinations_with_replacement(nprimes, i)))
#    print len(c)