File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
project_euler/problem_005 Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ Project Euler Problem 5: https://projecteuler.net/problem=5
3
+
4
+ Smallest multiple
5
+
6
+ 2520 is the smallest number that can be divided by each of the numbers
7
+ from 1 to 10 without any remainder.
8
+
9
+ What is the smallest positive number that is _evenly divisible_ by all
10
+ of the numbers from 1 to 20?
11
+ """
12
+
13
+
14
+ def solution (n : int = 20 ) -> int :
15
+ """
16
+ Find the smallest number for 'n'.
17
+ Iterate over each number up to n and add new factors
18
+ that is not included in previous numbers.
19
+
20
+ # >>> solution(10)
21
+ # 2520
22
+ # >>> solution(15)
23
+ # 360360
24
+ # >>> solution(22)
25
+ # 232792560
26
+ """
27
+
28
+ # factors = {}
29
+ factors = [0 ] * (n + 1 )
30
+ ans = 1
31
+ for i in range (2 , n + 1 ):
32
+ if factors [i ] == 0 :
33
+ f = i
34
+ for j in range (2 , i ):
35
+ if f == 1 :
36
+ break
37
+ power = factors [j ]
38
+ while power > 0 :
39
+ if f % j == 0 :
40
+ f //= j
41
+ power -= 1
42
+ else :
43
+ break
44
+ if f != 1 :
45
+ factors [f ] += 1
46
+ ans *= f
47
+ return ans
48
+
49
+
50
+ if __name__ == "__main__" :
51
+ print (f"{ solution () = } " )
You can’t perform that action at this time.
0 commit comments