Exemple #1
0
    sequence?

Notes:
    Brute force with my primes generator should be good enough. If we happen
    to get some primes which do have permutations (but not three) we can boot
    em.

"""

from itertools import permutations
from projecteuler import all_primes_between


if __name__ == '__main__':

    primes = all_primes_between(2, 9999)

    x = []
    for p in primes:
        if p < 1000:
            pass
        else:
            for p2 in permutations(str(p)):
                p2 = int(''.join(p2))
                if (p2 > p) and (p2 in primes):
                    p3 = 2 * p2 - p
                    if (p3 < 10000) and (p3 in primes) and (sorted(str(p3)) == sorted(str(p))):
                        x.append((p, p2, p3))

    print x
Exemple #2
0
    What 12-digit number do you form by concatenating the three terms in this
    sequence?

Notes:
    Brute force with my primes generator should be good enough. If we happen
    to get some primes which do have permutations (but not three) we can boot
    em.

"""

from itertools import permutations
from projecteuler import all_primes_between

if __name__ == '__main__':

    primes = all_primes_between(2, 9999)

    x = []
    for p in primes:
        if p < 1000:
            pass
        else:
            for p2 in permutations(str(p)):
                p2 = int(''.join(p2))
                if (p2 > p) and (p2 in primes):
                    p3 = 2 * p2 - p
                    if (p3 < 10000) and (p3 in primes) and (sorted(str(p3))
                                                            == sorted(str(p))):
                        x.append((p, p2, p3))

    print x
Exemple #3
0
    Simple enough. Generate a list of primes, check the sum of all the sub-sets
    of increasing size. To do this, we make a cumulative sum. Then we check the
    offsets (csPrimes - csPrimes[i]) for the largest prime.

"""

from projecteuler import all_primes_between


N = 1000000
# N = 100


if __name__ == "__main__":

    primes = all_primes_between(2, N)
    primeSums = [0]
    for i in range(len(primes)):
        primeSums.append(primeSums[-1] + primes[i])

    L = len(primeSums)

    numberOfPrimes = 0
    pMax = 0
    for i in range(len(primeSums)):
        for j in range(i - numberOfPrimes - 1, -1, -1):
            dp = primeSums[i] - primeSums[j]
            if dp > N:
                break
            if dp in primes:
                numberOfPrimes = i - j
Exemple #4
0
    s = set()
    sp = str(p)
    L = len(sp)
    s = {int(''.join([sp[(offset + j) % L] for j in range(L)]))
         for offset in range(L)}

    return s


def any_evens(p):
    return any(int(el) % 2 == 0 for el in str(p)) or p == 2


if __name__ == '__main__':

    n = all_primes_between(2, 1000000)
    unchecked = set(n)

    circularPrimes = set()

    i = 0
    for p in n:
        if any_evens(p):
            unchecked.discard(p)
        else:
            if p / 1000 > i:
                print p
                i = p / 1000
            if p in unchecked:
                ps = perms(p)
                isCircular = all(el in n for el in ps)
Exemple #5
0
    L = len(sp)
    s = {
        int(''.join([sp[(offset + j) % L] for j in range(L)]))
        for offset in range(L)
    }

    return s


def any_evens(p):
    return any(int(el) % 2 == 0 for el in str(p)) or p == 2


if __name__ == '__main__':

    n = all_primes_between(2, 1000000)
    unchecked = set(n)

    circularPrimes = set()

    i = 0
    for p in n:
        if any_evens(p):
            unchecked.discard(p)
        else:
            if p / 1000 > i:
                print p
                i = p / 1000
            if p in unchecked:
                ps = perms(p)
                isCircular = all(el in n for el in ps)
Exemple #6
0
Notes:
    Simple enough. Generate a list of primes, check the sum of all the sub-sets
    of increasing size. To do this, we make a cumulative sum. Then we check the
    offsets (csPrimes - csPrimes[i]) for the largest prime.

"""

from projecteuler import all_primes_between

N = 1000000
#N = 100

if __name__ == '__main__':

    primes = all_primes_between(2, N)
    primeSums = [0]
    for i in range(len(primes)):
        primeSums.append(primeSums[-1] + primes[i])

    L = len(primeSums)

    numberOfPrimes = 0
    pMax = 0
    for i in range(len(primeSums)):
        for j in range(i - numberOfPrimes - 1, -1, -1):
            dp = primeSums[i] - primeSums[j]
            if dp > N:
                break
            if dp in primes:
                numberOfPrimes = i - j