Um número inteiro positivo ω
é um número de Fibonacci:
Se e somente se
5 * ω^2 + 4
OR5 * ω^2 - 4
for um quadrado perfeito.
Primeiro, vamos escrever um método para testar se um número positivo é um quadrado perfeito ou não (observe que existem muitas implementações desse método):
def is_perfect_square? pos_number
Math.sqrt(pos_number).to_i == Math.sqrt(pos_number)
end
E aqui está o método para testar se o número é um Fibonacci ou não:
def is_feb? n
is_perfect_square?(5 * n**2 + 4) ||
is_perfect_square?(5 * n**2 - 4)
end