コード例 #1
0
ファイル: p49.py プロジェクト: RZachLamberty/project_euler
    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
コード例 #2
0
ファイル: p49.py プロジェクト: RZachLamberty/project_euler
    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
コード例 #3
0
ファイル: p50.py プロジェクト: RZachLamberty/project_euler
    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
コード例 #4
0
ファイル: p35.py プロジェクト: RZachLamberty/project_euler
    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)
コード例 #5
0
ファイル: p35.py プロジェクト: RZachLamberty/project_euler
    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)
コード例 #6
0
ファイル: p50.py プロジェクト: RZachLamberty/project_euler
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