0

我想计算任何整数的 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)) 
4

1 回答 1

1

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

一种方法是使用表示第n个斐波那契数的递归关系,它仍然保持模m。只有两个初始值,所以...

于 2016-07-06T15:23:34.620 回答