我想將一個數字分解成儘可能相互接近的數字元組,其產品是初始數字。輸入是我們想要的數字n
以及所需因子的數字m
。將一個數字分解爲幾乎相同的因子
對於這兩個因素的情況(m==2
),這是不夠尋找的最大因素不是一個平方根少,所以我可以做這樣的事情
def get_factors(n):
i = int(n**0.5 + 0.5)
while n % i != 0:
i -= 1
return i, n/i
因此,與120
調用,這將導致10,12
。
我意識到對於數字「大小接近」意味着什麼含糊不清。我不介意這是否被解釋爲最小化Σ(x_i - x_avg)
或Σ(x_i - x_avg)^2
或通常沿着這些線路的其他東西。
對於m==3
情況下,我會期望336
生產6,7,8
和729
生產9,9,9
。
理想情況下,我想要一個通用的解決方案m
,但如果有人有一個想法,即使是m==3
它將不勝感激。我也歡迎一般的啓發式。
編輯:我寧願儘量減少因素的總和。對上述內容仍然感興趣,但如果有人有一個想法,以找出最佳的價值,使得因素的總和是最小的,它會很好!
你可以嘗試生成所有的主要因素,然後生成'M'的每個組合找到最小誤差。 – 2015-01-21 00:00:52