皮萨诺时期的长度发现
Pisano Period length finding
皮萨诺时期除了前两个位置之外的其他位置0和1可以一起出现吗?我正在尝试解决需要知道皮萨诺周期长度的问题。于是就想着在期间搜0和1
是的,如果 0 和 1 相邻,则您处于序列重复的点。
一个快速证明的想法:假设您发现 0 和 1 在斐波那契数列中彼此相邻 mod 某个数字 n。换句话说,你在序列中找到了一些位置 k 和 k+1,使得第 k 个位置等于 F0 mod n 和 (k+1 )st 位置等于 F1 mod n。这意味着位置 k+2 等于 F0 + F1 = F2 modn,其后的位置等于F1 + F2 = F3 mod n 等。这意味着,如果您在数列中看到 0 和 1 相邻,那么接下来的数列一定等同于您从头开始重新计算斐波那契数列时所找到的数字序列。
希望对您有所帮助!
这是确定皮萨诺时期的快速 Python 代码
def pisanoPeriod(m):
previous, current = 0, 1
for i in range(0, m * m):
previous, current \
= current, (previous + current) % m
# A Pisano Period starts with 01
if (previous == 0 and current == 1):
return i + 1
皮萨诺时期除了前两个位置之外的其他位置0和1可以一起出现吗?我正在尝试解决需要知道皮萨诺周期长度的问题。于是就想着在期间搜0和1
是的,如果 0 和 1 相邻,则您处于序列重复的点。
一个快速证明的想法:假设您发现 0 和 1 在斐波那契数列中彼此相邻 mod 某个数字 n。换句话说,你在序列中找到了一些位置 k 和 k+1,使得第 k 个位置等于 F0 mod n 和 (k+1 )st 位置等于 F1 mod n。这意味着位置 k+2 等于 F0 + F1 = F2 modn,其后的位置等于F1 + F2 = F3 mod n 等。这意味着,如果您在数列中看到 0 和 1 相邻,那么接下来的数列一定等同于您从头开始重新计算斐波那契数列时所找到的数字序列。
希望对您有所帮助!
这是确定皮萨诺时期的快速 Python 代码
def pisanoPeriod(m):
previous, current = 0, 1
for i in range(0, m * m):
previous, current \
= current, (previous + current) % m
# A Pisano Period starts with 01
if (previous == 0 and current == 1):
return i + 1