Ruby を使用して問題を解決する練習をするために、Project Euler の問題をいくつか見ていきます。私は問題 3 に対して次の解決策を思いつきました。これは小さい数値では機能しますが、大きい数値に対しては決して値を返さないようです。これはBignumと関係があるためですか?タイムアウトの理由と、この問題を解決するためのより良い方法を誰かが私に説明できますか (できれば、舞台裏で何が起こっているかについての推論/情報を使用してください。私は理解しようとしています)
プロジェクト オイラー問題:
13195 の素因数は 5、7、13、29 です。600851475143 の最大の素因数は?
私の解決策:
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)