查找Pisano Period的代码显示输出错误

时间:2016-07-06 14:57:50

标签: python python-3.x fibonacci mod

我想计算Pisano Period的任何整数2 <= m <= 100000

此代码目前不适用于m>4m>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)) 

1 个答案:

答案 0 :(得分:1)

您的停止条件是p[::-1] != p[0:],它会检查列表是否是回文。如果列表重复,您的停止条件应该是。

这样做的一种方法是使用表示 n -th Fibonacci数的递归关系,它仍然保持模 m 。只有两个初始值,所以......