1. faktoris
def factorize(n):
factors = {}
d = 2
while n > 1:
power = 0
while n % d == 0:
power += 1
n //= d
if power > 0:
factors[d] = power
d += 1
if d * d > n:
d = n
return factors
def get_all_divisors(n):
divisors = []
d = 1
while d * d <= n:
if n % d == 0:
divisors.append(d)
if d * d != n:
divisors.append(n // d)
d += 1
return sorted(divisors)
def test():
assert factorize(24) == {2: 3, 3: 1}
assert get_all_divisors(16) == [1, 2, 4, 8, 16]
test()
2. tapological sort
def topological_sort(graph):
def dfs(graph, used, order, u):
used[u] = True
for v in graph[u]:
if not used[v]:
dfs(graph, used, order, v)
order.append(u)
n = len(graph)
used = [False] * n
order = []
for i in range(n):
if not used[i]:
dfs(graph, used, order, i)
return order[::-1]
def test():
g = [[] for _ in range(3)]
g[2].append(0)
g[2].append(1)
g[0].append(1)
assert topological_sort(g) == [2, 0, 1]
test()
Comments
Post a Comment