Do day 8 and add gcm and prime factors to lib.
This commit is contained in:
32
lib.py
32
lib.py
@@ -1,5 +1,37 @@
|
||||
import re
|
||||
|
||||
def prime_factors(n):
|
||||
"""
|
||||
Returns a list of prime factors for n.
|
||||
|
||||
:param n: number for which prime factors should be returned
|
||||
"""
|
||||
factors = []
|
||||
rest = n
|
||||
divisor = 2
|
||||
while rest % divisor == 0:
|
||||
factors.append(divisor)
|
||||
rest //= divisor
|
||||
divisor = 3
|
||||
while divisor * divisor <= rest:
|
||||
while rest % divisor == 0:
|
||||
factors.append(divisor)
|
||||
rest //= divisor
|
||||
divisor += 2
|
||||
if rest != 1:
|
||||
factors.append(rest)
|
||||
return factors
|
||||
|
||||
def lcm(numbers: list[int]) -> int:
|
||||
fs = []
|
||||
for n in numbers:
|
||||
fs += prime_factors(n)
|
||||
s = 1
|
||||
fs = list(set(fs))
|
||||
for f in fs:
|
||||
s *= f
|
||||
return s
|
||||
|
||||
def str_to_single_int(line: str) -> int:
|
||||
line = line.replace(" ", "")
|
||||
r = re.compile(r"\d+")
|
||||
|
||||
Reference in New Issue
Block a user