我想计算Pisano Period的任何整数2 <= m <= 100000
。
此代码目前不适用于m>4
,m>4
输出显示为9
。我在下面的代码中做错了什么。
def fib(n):
i=0
f=[]
while(i<=n):
f.append(i)
i+=1
i=2
while(i<=n):
f[i]=f[i-1]+f[i-2]
i+=1
return f[n]
m=int(input())
j=2
p=[0,1,1,2]
while (p[j-1]!=1 and p[j-2]!=0):
h=fib(j)%m
p.append(h)
j+=1
print(len(p))
答案 0 :(得分:1)
您的停止条件是p[::-1] != p[0:]
,它会检查列表是否是回文。如果列表重复,您的停止条件应该是。
这样做的一种方法是使用表示 n -th Fibonacci数的递归关系,它仍然保持模 m 。只有两个初始值,所以......