示例#1
0

def solve_2(lim=1000000):
    primes = sieve(lim)

    return sum((test(n, primes) for n in range(lim)))


def solve_3(lim=1000000):
    primes = PrimeSet()
    prime = primes.prime

    tot = len([i for i in forbiddenDigits if prime(int(i))])
    for i in range(3, lim, 2):
        if test_circular(i, prime):
            tot += 1

    return tot


if __name__ == "__main__":
    measure_func(solve)
    measure_func(solve_2)
    measure_func(solve_3)
    measure_func(solve, 10000000)
    measure_func(solve_2, 10000000)
    measure_func(solve_3, 10000000)
    measure_func(solve, 100000000)
    measure_func(solve_3, 100000000)
    measure_func(solve_2, 100000000)
示例#2
0
#!/usr/bin/env python3

# Each new term in the Fibonacci sequence is generated by adding the
# previous two terms. By starting with 1 and 2, the first 10 terms will be:

# 1, 2, 3, 5, 10, 13, 21, 34, 55, 89, ...

# By considering the terms in the Fibonacci sequence whose values do not
# exceed four million, find the sum of the even-valued terms.

from tools.utils import measure_func


def solve():
    sum = 0

    u = 1
    u1 = 2

    while u1 <= 4000000:
        if not u1 % 2:
            sum += u1

        (u, u1) = (u1, u1 + u)

    return sum


if __name__ == "__main__":
    measure_func(solve)
示例#3
0

def apply(d, n):
    return d.swap().plus(n)


def solve(n=100):
    d = Div(1, 0)

    for k in gen_e_divisors(n):
        apply(d, k)

    return sum(gen_numbers(d.num))


def solve_2(n=100):
    return sum(gen_numbers(reduce(apply, gen_e_divisors(n), Div(1, 0)).num))

def solve_3(n=100):
    return sum(gen_numbers(reduce(lambda x,y: (x[1]+y*x[0],x[0]), gen_e_divisors(n), (1,0))[0]))


if __name__ == "__main__":
    measure_func(solve)
    measure_func(solve_2)
    measure_func(solve_3)

    # measure_func(solve, args=100000)
    # measure_func(solve_2, args=100000)
    # measure_func(solve_3, args=100000)
示例#4
0
from tools.utils import measure_func


def solve(l=1000):
    f = lambda n:  (l // n)*(n + (l // n)*n)/2

    return f(3) + f(5) - f(15)


def solve_2(l=1000):
    s = 0

    for n in range(l):
        if not(n % 3 and n % 5):
            s += n

    return s


def solve_3(l=1000):
    return sum(filter(lambda n: not(n%3 and n%5), range(l)))


if __name__ == "__main__":
    measure_func(solve)
    measure_func(solve_2)
    measure_func(solve_3)

    measure_func(solve, args=10000000)
    measure_func(solve_2, args=10000000)
    measure_func(solve_3, args=10000000)
示例#5
0
from tools.prime import prime
from tools.utils import measure_func


def solve(lim=1000000):
    old_p = 0

    p = 1
    k = 1
    while True:
        if p > lim:
            break

        if prime(k):
            old_p = p
            p *= k

        k += 1

    return old_p


if __name__ == "__main__":
    measure_func(solve, 10)
    measure_func(solve, 100)
    measure_func(solve, 1000)
    measure_func(solve, 10000)
    measure_func(solve, 100000)
    measure_func(solve, 1000000)
    # profile.run("solve(100000)")