Bei Project Euler # 3 in der Ruby-Lösung tritt eine Zeitüberschreitung auf

Ich gehe einige der Project Euler-Probleme durch, um das Lösen von Problemen mit Ruby zu üben. Ich habe die folgende Lösung für Problem 3 gefunden, und obwohl es für kleinere Zahlen funktioniert, scheint es nie einen Wert für größere Zahlen zurückzugeben. Hat das etwas mit Bignum zu tun? Kann mir jemand beschreiben, warum es Zeitüberschreitung gibt und wie man dieses Problem besser lösen kann (vorzugsweise mit Argumenten / Informationen darüber, was hinter den Kulissen vor sich geht. Ich versuche esverstehen)

Projekt Euler Problem:

Die Primfaktoren von 13195 sind 5, 7, 13 und 29. Was ist der größte Primfaktor der Zahl 600851475143?

Meine Lösung:

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)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage