📜  Python程序如何检查给定的数字是否是斐波那契数?

📅  最后修改于: 2022-05-13 01:56:56.511000             🧑  作者: Mango

Python程序如何检查给定的数字是否是斐波那契数?

给定一个数字 \'n\',如何检查 n 是否为斐波那契数。前几个斐波那契数是 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ..
例子 :

Input : 8
Output : Yes

Input : 34
Output : Yes

Input : 41
Output : No

以下是关于斐波那契数的一个有趣属性,它也可用于检查给定数是否为斐波那契数。
一个数字是斐波那契当且仅当 (5*n 2 + 4) 或 (5*n 2 – 4) 之一或两者是完美正方形(来源:Wiki)。

Python3
# python program to check if x is a perfect square
import math
 
# A utility function that returns true if x is perfect square
def isPerfectSquare(x):
    s = int(math.sqrt(x))
    return s*s == x
 
# Returns true if n is a Fibonacci Number, else false
def isFibonacci(n):
 
    # n is Fibonacci if one of 5*n*n + 4 or 5*n*n - 4 or both
    # is a perfect square
    return isPerfectSquare(5*n*n + 4) or isPerfectSquare(5*n*n - 4)
    
# A utility function to test above functions
for i in range(1,11):
     if (isFibonacci(i) == True):
         print (i,"is a Fibonacci Number")
     else:
         print (i,"is a not Fibonacci Number ")


输出
1 is a Fibonacci Number
2 is a Fibonacci Number
3 is a Fibonacci Number
4 is a not Fibonacci Number 
5 is a Fibonacci Number
6 is a not Fibonacci Number 
7 is a not Fibonacci Number 
8 is a Fibonacci Number
9 is a not Fibonacci Number 
10 is a not Fibonacci Number 

请参阅有关如何检查给定数字是否为斐波那契数的完整文章?更多细节!