很难为此提供一个简洁的标题。我确定我要完成的工作都有术语,并且毫无疑问,有一种通用的算法可以完成我要完成的工作-我只是还不了解它们。
我需要将数字分解为n个,每个n为50的倍数。数字本身就是50的倍数。这里是一个示例:
将5,000除以3,最后得到三个数字,每个数字都是50的倍数:
我还希望分配数字,以便它们来回翻转,这是一个带有更多数字的示例,以说明这一点:
将5,000除以7,最后得到7个数字,每个数字都是50的倍数:
请注意,在上面的示例中,我不担心多余的50个不位于系列的中心,也就是说,我不需要这样的内容:
希望我已经清楚地提出了这个问题,以使您了解我想要完成的工作。
更新:这是我将要使用的功能。
var number = 5000;
var n = 7;
var multiple = 50;
var values = getIntDividedIntoMultiple(number, n, multiple)
function getIntDividedIntoMultiple(dividend, divisor, multiple)
{
var values = [];
while (dividend> 0 && divisor > 0)
{
var a = Math.round(dividend/ divisor / multiple) * multiple;
dividend -= a;
divisor--;
values.push(a);
}
return values;
}
最佳答案
var number = 5000;
var n = 7;
var values = [];
while (number > 0 && n > 0) {
var a = Math.floor(number / n / 50) * 50;
number -= a;
n--;
values.push(a);
} // 700 700 700 700 700 750 750
编辑
您可以交替使用
Math.floor
和Math.ceil
以获得所需的结果:while (number > 0 && n > 0) {
if (a%2 == 0)
a = Math.floor(number / n / 50) * 50;
else
a = Math.ceil(number / n / 50) * 50;
number -= a;
n--;
values.push(a);
} // 700 750 700 750 700 700 700
关于javascript - 如何将数字分为整数,每个整数都是n的倍数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9776555/