Como saber se um número é Fibonacci

Um número inteiro positivo ωé um número de Fibonacci:

Se e somente se 5 * ω^2 + 4 OR 5 * ω^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