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?
先从2-10分解质因子来考虑:
2 = 2
3 = 3
4 = 2*2
5 = 5
6 = 2*3
7 = 7
8 = 2*2*2
9 = 3*3
10 = 2*5
而最小的2520的质因子为:2*2*2*3*3*5*7。如何利用2-10的质因子构造出2520的质因子是关键。
a = {} # 字典,key是质因子,value是质因子个数 for i in range(2,21): # 从2-20开始遍历 temp = {} # while i!= 1: for j in range(2,21): if i % j == 0: temp.setdefault(j,0) temp[j]+=1 i /= j break for k in temp: if a.setdefault(k, 0) < temp[k]: a[k]=temp[k] b = 1 for i in a: b *= i**a[i] print(b)