Ejemplo n.º 1
0
def p49():
    s = get_sieve_erosthane(9999, sort = True)
    sieve = [n for n in s if n >= 1000]
    sieveSet = set(sieve)

    answers = set()
    for n in sieve:

        perm = permutations(str(n))
        num = set([list_to_int(i) for i in perm if list_to_int(i) in sieveSet])
        if len(num) < 3 : continue

        num = list(num)
        num.sort()

        l = len(num)
        for i in range(0, l):
            for j in range(i+1, l):
                diff = num[j] - num[i]

                if num[i] + diff not in num or num[i] + 2 * diff not in num :
                    continue

                answers.add((num[i], num[i]+diff, num[i]+diff+diff))

    return answers
Ejemplo n.º 2
0
def p41():
    numbers = ['0', '1', '21', '321', '4321', '54321', '654321', '7654321']

    # sqrt(999999999) = 31622
    sieve = get_sieve_erosthane(32000, sort = True)

    for i in range(7, 1, -1):
        perm = permutations(numbers[i])
        for p in perm:
            num = list_to_int(p)
            if pTest_sieve(num, sieve) : 
                return num
Ejemplo n.º 3
0
def p43():
    num = "0123456789"
    perms = permutations(num)

    answer = []

    for ns in perms:

        # Rough Checks
        if (int(ns[3]) % 2 != 0 or 
            int(ns[5]) % 5 != 0 ): 
            continue

        # Full Checks
        if (list_to_int(ns[2:5])  % 3  != 0 or
            list_to_int(ns[4:7])  % 7  != 0 or
            list_to_int(ns[5:8])  % 11 != 0 or
            list_to_int(ns[6:9])  % 13 != 0 or 
            list_to_int(ns[7:10]) % 17 != 0) :
            continue


        answer.append(list_to_int(ns))
        print ns

    print answer
    return sum(answer)