def pisano(m):
if m == 1:
return 1
"""
toda sequência tem tamanho par, então posso começar de n = 2 e terminar quando
obter:
f_n_minus_1 == 0
f_n == 1
"""
f_n_minus_1 = 1
f_n = 1
n = 2
while not(f_n_minus_1 == 0 and f_n == 1):
f_n_plus_1 = (f_n + f_n_minus_1) % m
f_n_minus_1 = f_n
f_n = f_n_plus_1
n += 1
return n - 1
for x in range(1, 11):
print("pisano({}) = {}".format(x, pisano(x)))
ZGVmIHBpc2FubyhtKToKCWlmIG0gPT0gMToKCQlyZXR1cm4gMQoJCQoJIiIiCgl0b2RhIHNlcXXDqm5jaWEgdGVtIHRhbWFuaG8gcGFyLCBlbnTDo28gcG9zc28gY29tZcOnYXIgZGUgbiA9IDIgZSB0ZXJtaW5hciBxdWFuZG8KCW9idGVyOgoJCglmX25fbWludXNfMSA9PSAwCglmX24gPT0gMQoJIiIiCgkKCWZfbl9taW51c18xID0gMQoJZl9uID0gMQoJbiA9IDIKCQoJd2hpbGUgbm90KGZfbl9taW51c18xID09IDAgYW5kIGZfbiA9PSAxKToKCQlmX25fcGx1c18xID0gKGZfbiArIGZfbl9taW51c18xKSAlIG0KCQlmX25fbWludXNfMSA9IGZfbgoJCWZfbiA9IGZfbl9wbHVzXzEKCQluICs9IDEKCXJldHVybiBuIC0gMQoJCmZvciB4IGluIHJhbmdlKDEsIDExKToKCXByaW50KCJwaXNhbm8oe30pID0ge30iLmZvcm1hdCh4LCBwaXNhbm8oeCkpKQ==