将整数分成单个数字乘积之和的算法?

时间:2016-06-20 20:16:00

标签: algorithm

这可能是一个奇怪的问题,所以我会尝试尽可能具体。

  

给定一个整数 N (大小是无关紧要的,但是出于我的特殊目的,它最多可达255,如果有所不同)将整数拆分为单个数字的乘积之和数字。当我说总和时,我的意思是加法和减法。这可能会或可能不会令人困惑,所以我会尽力用一两个例子来澄清。

鉴于数字 73 ,我们首先注意到数字是素数,因此唯一的单位数除数是1,这对我们来说并不是非常有用

我们的下一步是找到一个紧密匹配,例如73 = 72 + 1,我们可以从那里开始。

72的主要除数是2,2,2,3和3;为了保持最佳状态,我们可以简单地写下 8和9

这给了我们最终的#34;公式" 8*9+1获得 73

显然,如果解决方案能够成为最好的解决方案,那我就会喜欢它。对于任何给定的数字,所以我将给出另一个例子,说明算法应该在哪里作出决定。

如果数字 255 ,我们显然可以5*3*17,只留下一个非单数字素数,我们需要拆分

17 可写为8*2+1,因此我们的总数现为5*3*(8*2+1)。当我们摆脱括号时,我们得到8*6*5+5*3

这个解决方案的问题在于我们还可以将{255}写为256-1,这将大大简化问题,为我们提供8*8*4-1,这显然是首选解决方案。

以前有人遇到过这种问题吗?我有什么方法可以解决这个问题吗?我在C工作,但实际的语言不相关,我只是渴望找到解决方案。

0 个答案:

没有答案