プログラムを使用して、600851475143 の最大素因数を見つけようとしています。これは Project Euler 用です: http://projecteuler.net/problem=3
私は最初にこのコードでこれを試みました:
#Ruby solution for http://projecteuler.net/problem=2
#Prepared by Richard Wilson (Senjai)
#We'll keep to our functional style of approaching these problems.
def gen_prime_factors(num) # generate the prime factors of num and return them in an array
result = []
2.upto(num-1) do |i| #ASSUMPTION: num > 3
#test if num is evenly divisable by i, if so add it to the result.
result.push i if num % i == 0
puts "Prime factor found: #{i}" # get some status updates so we know there wasn't a crash
end
result #Implicit return
end
#Print the largest prime factor of 600851475143. This will always be the last value in the array so:
puts gen_prime_factors(600851475143).last #this might take a while
これは小さな数には最適ですが、大きな数には非常に長い時間 (そして多くのメモリ) がかかります。
今、私は少し前に大学の微積分を取りましたが、私はかなり錆びていて、それ以来数学についていけていません.
率直な答えは望んでいませんが、リソースを指摘したり、プログラムで見たアルゴリズムのいくつかを実装するために何を学ぶ必要があるかを教えてもらいたいです。