Javascriptで整数分割のアルゴリズム(partition)

例えば10000円を支払わなければならない状況で、毎月ある金額を3ヶ月に渡って分割して支払いたいときなどは、そのまま3で割ってしまうと少数になって困ってしまいます。 そんな時のための整数分割アルゴリズムです。

以下のコードではdividendn個の整数に分割します。

function partition(dividend, n){
  // 整数分割アルゴリズム
  var base = Math.floor(dividend / n); // 最低の配当
  var rem  = dividend % n; // あまり

  var list = [];
  for (var i=0; i<n; i++) {
    list[i] = (i < rem) ? base + 1 : base;
  }
  return list;
}

上の例だと以下が出力されます。

> (3) [334, 333, 333]