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
0 nhận xét:
Đăng nhận xét