Thứ Bảy, 16 tháng 4, 2016

[#5] 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?
 
 

def isPrime(n):
        '''
        Check the number is prime or not.
        '''
        if n == 2 or n == 3:
            return True
        if n < 2 or n % 2 == 0:
            return False
        if n < 9:
            return True
        if n % 3 == 0:
            return False
        r = int(n**0.5)
        f = 5
        while f <= r:
            if n % f == 0:
                return False
            if n %(f+2) == 0:
                return False
            f += 6
        return True
def problem5(a, b):
        '''
        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 a to b?
        '''
        prime = []#store prime number from a to b
        exp = []#store the exponent of prime
        for i in range(a, b + 1):
            if isPrime(i):
                prime += [i]
                exp += [1]
        for i in range(a, b + 1):
            if i == 1:
                continue
            if isPrime(i):
                continue
            temp = [0] * len(exp)#store exponent of prime in number i
            number = i
            for j in range(len(prime)):
                while number != 1:
                    if number % prime[j] == 0:
                        temp[j] +=1
                        number /= prime[j]
                    else:
                        break
            for x in range(len(exp)):
                    if temp[x] > exp[x]:
                        exp[x] = temp[x]
        result = 1
        for i in range (len(exp)):
                result *= prime[i]**exp[i]
        return result

ChiefdaThief

Author & Editor

Keep It Simple Stupid.

0 nhận xét:

Đăng nhận xét

Manual Categories