2507. 使用质因数之和替换后可以取到的最小值
给你一个正整数 n 。
请你将 n 的值替换为 n 的 质因数 之和,重复这一过程。
注意,如果 n 能够被某个质因数多次整除,则在求和时,应当包含这个质因数同样次数。
返回 n 可以取到的最小值。
示例 1:
输入:n = 15
输出:5
解释:最开始,n = 15 。
15 = 3 * 5 ,所以 n 替换为 3 + 5 = 8 。
8 = 2 * 2 * 2 ,所以 n 替换为 2 + 2 + 2 = 6 。
6 = 2 * 3 ,所以 n 替换为 2 + 3 = 5 。
5 是 n 可以取到的最小值。
示例 2:
输入:n = 3
输出:3
解释:最开始,n = 3 。
3 是 n 可以取到的最小值。
提示:
2 <= n <= 10**5
题解:
# @param {Integer} n
# @return {Integer}
require "prime"
def smallest_value(n)
h = Hash.new(0)
while !(Prime.prime?(n))
Prime.each(n) do |m|
if n%m == 0
n = n/m
h[m] += 1
if Prime.prime?(n)
h[n] += 1
n = h.keys.map {|k| h[k]*k}.sum
h.clear
if Prime.prime?(n)
return n
elsif n == 4
return n
end
end
end
end
end
n
end