Идеальный квадрат это целое число, квадратный корень которого является целым числом.
С помощью этого проверяю, является ли число числом Фибоначчи:
def perf_square x
return x == Math.sqrt(x) ** 2
end
perf_square(5 * (num ** 2) + 4) || perf_square(5 * (num ** 2) - 4) ? "IsFibo" : "IsNotFibo"
Когда число num небольшое проблем не возникает, но с большими числами проверку на "идеальность" квадрат не проходит.
Возможно ли решить задачу по нахождению идеального квадрата на руби? Если да, то в какую сторону копать?