Пример #1
0
def find_solution():
    start_time = datetime.now()
    answer = 0
    primes = []
    progress = ProgressBar(1000000)

    for n in xrange(2, progress.max):
        progress.set_value(n)

        if is_prime(n, primes):
            primes.append(n)

            all_prime = True
            for item in rotate(n):
                if not is_prime(int(item)):
                    all_prime = False
                    break

            if all_prime:
                print "Found palindrome: %s" % n
                answer += 1


    end_time = datetime.now()
    progress.finished()
    print "answer: %s" % answer
    print "number of primes: %s" % len(primes)
    print "first 10 primes: %s" % primes[:10]
    print end_time - start_time
Пример #2
0
def find_solution():
    start_time = datetime.now()
    answer = 0
    primes = []
    progress = ProgressBar(1000000)

    for n in xrange(2, progress.max):
        progress.set_value(n)

        if is_prime(n, primes):
            primes.append(n)

            #~ digits = map(lambda x: int(x), str(n))
            try:
                permutate(map(lambda x: x, str(n)), [], raise_if_not_prime)
                print "Found palindrome: %s" % n
                answer += 1

            except IsNotPrimeError:
                pass

            #~ all_prime = True
            #~ for item in permutate(map(lambda x: x, str(n)), ""):
                #~ if not is_prime(int(item)):
                    #~ all_prime = False
                    #~ break

            #~ if all_prime:

    end_time = datetime.now()
    progress.finished()
    print "answer: %s" % answer
    print "number of primes: %s" % len(primes)
    print "first 10 primes: %s" % primes[:10]
    print end_time - start_time
Пример #3
0
def is_truncatable(number):
    if not is_prime(number):
        return False

    number_str = str(number)
    for n in range(1, len(number_str)):
        truncated = int(number_str[:-n])
        if not is_prime(truncated):
            #~ print truncated
            return False

        truncated = int(number_str[n:])
        #~ print truncated
        if not is_prime(truncated):
            return False
    # from left to right

    return True
Пример #4
0
def do_it(number, depth):
    solution_count = 0
    #~ print "do_it(%s, %s)" % (number, depth)
    for append_this in range(10):
        #~ check_this = int(str(number) + str(append_this))
        check_this = number * 10 + append_this
        if is_prime(check_this):
            #~ print check_this
            do_it(int(check_this), depth + 1)

            if is_truncatable(check_this):
                solutions.append(check_this)
Пример #5
0
def chain_length(a, b):
    """
        >>> chain_length(-79, 1601)
        80
        >>> chain_length(1, 41)
        40
    """
    n = 0
    while True:
        p = n ** 2 + a * n + b
        if not is_prime(p):
            break

        n += 1

    return n
Пример #6
0
def primes(max=None):
    n = 1
    while (max == None) or (n < max):
        if is_prime(n):
            yield n
        n += 1
Пример #7
0
"""
if __name__ == "__main__":
    import sys, os
    sys.path.append( os.path.join( os.getcwd(), '..' ) )

from datetime import datetime

from euler_tools.prime import is_prime
from euler_tools.progress_bar import ProgressBar

start_time = datetime.now()
sum = 0
primes = []
progress = ProgressBar(2000000)

for n in xrange(2, progress.max):
    progress.set_value(n)

    if is_prime(n, primes):
        sum += n
        primes.append(n)

end_time = datetime.now()
progress.finished()
print "sum: %s" % sum
print "number of primes: %s" % len(primes)
print end_time - start_time

#2,000,000: 142913828922

Пример #8
0
def raise_if_not_prime(char_array):
    tmp_str = reduce(lambda r, x: r + str(x), char_array, "")
    if not is_prime(int(tmp_str)):
        raise IsNotPrimeError("is not prime: " + tmp_str)
Пример #9
0
"""
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6^(th) prime is 13.

What is the 10001^(st) prime number?
"""
if __name__ == "__main__":
    import sys, os
    sys.path.append( os.path.join( os.getcwd(), '..' ) )

from euler_tools.prime import is_prime

n = 2
for counter in range(10001):
    while not is_prime(n):
        n += 1

    print "#%s\t%s" % (counter, n)
    n += 1