У меня возникли некоторые проблемы на Project Euler .Один из вопросов:
Основными коэффициентами 13195 являются 5, 7, 13 и 29. Какой самый большой главный фактор числа 600851475143?
У меня естькакой-то код написан ... и он работает:
class Integer
def primeFactors
load('/home/arseno/ruby/lib/prime.rb')
a = []
for i in (1..self)
div = self.to_f/i.to_f
if((div==div.to_i)&&(Prime.prime?(i)))
a << i
end
end
a
end
end
puts 13195.primeFactors
Выходы:
5
7
13
29
Пока все хорошо!Теперь, когда я вместо этого вставил 600851475143, мой терминал зависает (вполне справедливо, что он вычисляет много всего!) Итак, я попытался сделать puts i
в цикле / if, чтобы я захватилвыводить, пока он повторяется ... в реальном времени.
Но, поместив этот puts i
в цикл, Ruby не выводит переменную на протяжении всей итерации;вместо этого он сохраняет значения в каком-то буфере и сбрасывает их, когда вычисление завершено.
Эта конкретная проблема требует, чтобы Ruby вычислял вечность (он работает в течение 10 минут), я подозреваю, чтонаходится в преобразованиях с плавающей точкой.
Почему Ruby (мой терминал?) удерживает значения до конца вычислений?Могу ли я увидеть значения в режиме реального времени, поскольку вместо этого они находят их?У вас есть лучший способ сделать это?