Rename Project Euler directories and other dependent changes (#3300)
* Rename all Project Euler directories: Reason: The change was done to maintain consistency throughout the directory and to keep all directories in sorted order. Due to the above change, some config files had to be modified: 'problem_22` -> `problem_022` * Update scripts to pad zeroes in PE directories
This commit is contained in:
43
project_euler/problem_005/sol2.py
Normal file
43
project_euler/problem_005/sol2.py
Normal file
@@ -0,0 +1,43 @@
|
||||
"""
|
||||
Problem:
|
||||
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(divisible with no
|
||||
remainder) by all of the numbers from 1 to N?
|
||||
"""
|
||||
""" Euclidean GCD Algorithm """
|
||||
|
||||
|
||||
def gcd(x: int, y: int) -> int:
|
||||
return x if y == 0 else gcd(y, x % y)
|
||||
|
||||
|
||||
""" Using the property lcm*gcd of two numbers = product of them """
|
||||
|
||||
|
||||
def lcm(x: int, y: int) -> int:
|
||||
return (x * y) // gcd(x, y)
|
||||
|
||||
|
||||
def solution(n: int = 20) -> int:
|
||||
"""Returns the smallest positive number that is evenly divisible(divisible
|
||||
with no remainder) by all of the numbers from 1 to n.
|
||||
|
||||
>>> solution(10)
|
||||
2520
|
||||
>>> solution(15)
|
||||
360360
|
||||
>>> solution(20)
|
||||
232792560
|
||||
>>> solution(22)
|
||||
232792560
|
||||
"""
|
||||
g = 1
|
||||
for i in range(1, n + 1):
|
||||
g = lcm(g, i)
|
||||
return g
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(solution(int(input().strip())))
|
||||
Reference in New Issue
Block a user