示例#1
0
def euler012(n):
    ''' Highly divisible triangular number
    
    The sequence of triangle numbers is generated by adding the natural numbers. 
    So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. 
    The first ten terms would be:
    1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

    Let us list the factors of the first seven triangle numbers:

    1: 1
    3: 1, 3
    6: 1, 2, 3, 6
    10: 1, 2, 5, 10
    15: 1, 3, 5, 15
    21: 1, 3, 7, 21
    28: 1, 2, 4, 7, 14, 28
    We can see that 28 is the first triangle number to have over five divisors.

    What is the value of the first triangle number to have over five hundred divisors? 
    
    >>> euler012(5)
    28
    >>> euler012(500)
    76576500
    '''
    return dropwhile(lambda x: len(list(divisors(x))) <= n, gentriangle()).next()
示例#2
0
def euler012b(n):
    ''' Original version of above function.

    >>> euler012b(5)
    28
    >>> euler012b(500)
    76576500
    '''
    t = gentriangle()
    while True:
        triangle = t.next()
        if len(list(divisors(triangle))) > n:
            return triangle
示例#3
0
def euler005(n):
    ''' Smallest multiple

    2520 is the smallest number that can be divided by each of the numbers from 1 to
    10 without any remainder.

    What is the smallest positive number that is evenly divisible by all of the numbers
    from 1 to 20?

    >>> euler005(10)
    2520
    >>> euler005(20)
    232792560
    '''
    start = 1
    multiply = range(2, n+1)  # steps through each integer in the range.
    for i in multiply:
        if start % i != 0: 
            try:
                start = start * list(divisors(i))[1]  # multiplies by the smallest factor
            except IndexError:
                start = start * i  # if is prime, multiply by that number
    return start
示例#4
0
 def ami(n):
     return sum(divisors(n, inclusive=False))