def mobius(n): if n == 1: return 1 k = 0 for p, e in factor(n): if e > 1: return 0 k += 1 return (-1) ** int(k % 2 == 1)
def pisano(m): pi = 1 for p, e in nt.factor(m): pi = lcm(pi, _pisano(p)*p**(e-1)) return pi