Przekroczono limit czasu projektu Euler # 3 w rozwiązaniu Ruby
Przeglądam kilka problemów z projektem Euler, aby ćwiczyć rozwiązywanie problemów za pomocą Rubiego. Wymyśliłem następujące rozwiązanie problemu 3 i chociaż działa ono dla mniejszych liczb, nigdy nie wydaje się zwracać wartości dla większych liczb. Czy to z powodu czegoś związanego z Bignum? Czy ktoś może mi opisać, dlaczego tak się skończyło i jak lepiej rozwiązać ten problem (najlepiej z rozumowaniem / informacją o tym, co dzieje się za kulisami. PróbujęRozumiesz)
Problem z projektem Euler:
Pierwszymi czynnikami 13195 są 5, 7, 13 i 29. Jaki jest największy współczynnik pierwszorzędowy liczby 600851475143?
Moje rozwiązanie:
def primecheck(number)
(2...number).each { |x| return false if number % x == 0}
true
end
def largestprime(number1)
factors = []
(1..number1).each do |i|
if number1 % i == 0 && primecheck(i)
factors << i
end
end
puts "The answer is #{factors.last}"
end
largestprime(600_851_475_143)