Javascript 将数字分解为彼此最接近的总和

Javascript 将数字分解为彼此最接近的总和,javascript,math,Javascript,Math,我希望Summand尽可能靠近彼此 x和y->“彼此最接近的y总和” 15和2->7+8 15和3->5+5+5 15和4->4+4+4+3 15和5->3+3+3+3+3 15和6->2+2+2+3+3+3 如果我除以x/y得到一个整数,那么解就是y乘以这个整数。但是如果我得到一个小数,它会变得更复杂,如上面的例子所示 如何使用任意x和y计算“最接近的总和”(最好使用javascript代码?如果从x中减去Math.floor(x/y)*y,则可以使用最小的排列将余数分布在项上。函数最接近的

我希望Summand尽可能靠近彼此

x和y->“彼此最接近的y总和”

15和2->7+8

15和3->5+5+5

15和4->4+4+4+3

15和5->3+3+3+3+3

15和6->2+2+2+3+3+3

如果我除以x/y得到一个整数,那么解就是y乘以这个整数。但是如果我得到一个小数,它会变得更复杂,如上面的例子所示


如何使用任意x和y计算“最接近的总和”(最好使用javascript代码?

如果从
x
中减去
Math.floor(x/y)*y
,则可以使用最小的排列将余数分布在项上。

函数最接近的总和(x,y){
function closest_summands(x, y) {
    var result = [],
        n = Math.floor(x / y),
        i, j;
    for (i = 0, j = x % y; i < y; i++, j--) {
        result.push(n + (j > 0 ? 1 : 0));
    }
    return result;
}
var结果=[], n=数学楼层(x/y), i、 j; 对于(i=0,j=x%y;i0?1:0)); } 返回结果; }
计算除法的剩余部分。它会告诉您需要多久将除法的确切结果取整一次,而不是取整一次

function closest_summands(x, y) {
    var div = x / y,
        rem = x % y,
        res = [];
    for (var i=0; i<rem; i++)
        res.push( Math.ceil(div) );
    for (       ; i<y;   i++) // continue
        res.push( Math.floor(div) );
    return res;
}
函数最近的求和(x,y){ var div=x/y, rem=x%y, res=[]; 对于(var i=0;i