Trong bài viết này, chúng ta sẽ học về giải pháp cho bài toán cho trước:
Đề bài
Cho một số n, kiểm tra xem n có phải là số Fibonacci hay không.
Chúng ta đều biết số Fibonacci thứ n là tổng của hai số Fibonacci trước đó. Nhưng chúng cũng cung cấp một mối quan hệ thú vị khác ngoài quan hệ đệ quy.
Một số là Fibonacci nếu và chỉ nếu (5*n^2 + 4) hoặc (5*n^2 - 4) là số chính phương.
Chúng ta sẽ sử dụng tính chất này để kiểm tra xem một số có phải Fibonacci hay không.
Bây giờ hãy xem triển khai script Python:
Ví dụ
import math
# nếu x là số chính phương
def isPerfectSquare(x):
s = int(math.sqrt(x))
return s * s == x
# nếu n là số Fibonacci
def isFibonacci(n):
# nếu một trong 5*n*n + 4 hoặc 5*n*n - 4 hoặc cả hai là số chính phương
return isPerfectSquare(5 * n * n + 4) or isPerfectSquare(5 * n * n - 4)
for i in range(1, 11):
if (isFibonacci(i) == True):
print(i, "is a Fibonacci Number")
else:
print(i, "is a not Fibonacci Number")
Kết quả
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
Tất cả hàm và biến được khai báo trong khung toàn cục như hình dưới đây:

Kết luận
Trong bài viết này, chúng ta đã học giải pháp xác định số cho trước có phải Fibonacci hay không.