在Python中检查给定的数字是否为斐波那契数
假设我们有一个数字n。我们必须检查n是否在斐波那契数列中。正如我们所知,在斐波那契数列中f(i) = f(i-1) + f(i-2),对于每个i从2到n,且f(0) = 0,f(1) = 1。
因此,如果输入为n = 13,则输出为True,因为斐波那契数列中有一些项:0,1,1,2,3,5,8,13,21,34,因此34存在。
为了解决这个问题,我们将遵循以下步骤−
- phi := 0.5 + 0.5 * square root of(5.0)
- a := phi * n
- 当n与0相同时,或当a是一个整数时,返回true
示例
让我们看一下下面的实现以更好地理解−
from math import sqrt
def solve(n):
phi = 0.5 + 0.5 * 5.0**0.5
a = phi * n
return n == 0 or abs(round(a) - a) < 1.0 / n
n = 13
print(solve(n))
输入
13
输出
True