Java程序如何检查给定的数字是否是斐波那契数?
给定一个数字“n”,如何检查 n 是否为斐波那契数。前几个斐波那契数是 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 141, ..
例子 :
Input : 8
Output : Yes
Input : 34
Output : Yes
Input : 41
Output : No
以下是关于斐波那契数的有趣属性,它也可用于检查给定数是否为斐波那契数。
一个数字是斐波那契当且仅当 (5*n 2 + 4) 或 (5*n 2 – 4) 之一或两者是完美正方形(来源:Wiki)。
// Java program to check if x is a perfect square
class GFG {
// A utility method that returns true if x is perfect square
static boolean isPerfectSquare(int x)
{
int s = (int)Math.sqrt(x);
return (s * s == x);
}
// Returns true if n is a Fibonacci Number, else false
static boolean isFibonacci(int 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) || isPerfectSquare(5 * n * n - 4);
}
// Driver method
public static void main(String[] args)
{
for (int i = 1; i <= 10; i++)
System.out.println(isFibonacci(i) ? i + " is a Fibonacci Number"
: i + " is a not Fibonacci Number");
}
}
// This code is contributed by Nikita Tiwari
输出:
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
请参阅有关如何检查给定数字是否为斐波那契数的完整文章?更多细节!