어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.
600851475143의 소인수 중에서 가장 큰 수를 구하세요.
In [4]:
target = 13195
result = 0
k = 0
2.upto(target).to_a.each do |i|
k += 1
break if k > 100
reminder = target % i
if reminder != 0
next
else
target = target / i
puts target.to_s + "/" + i.to_s
if target == 1
result = i
break
end
redo
end
end
result
Out[4]:
In [6]:
target = 600851475143
result = 0
k = 0
(2..target).lazy.each do |i|
reminder = target % i
if reminder != 0
next
else
target = target / i
puts target.to_s + "/" + i.to_s
if target == 1
result = i
break
end
redo
end
end
In [ ]: