Javascript将大量数字拆分为素数数组

时间:2016-08-03 19:13:36

标签: javascript arrays split numbers

我有一个奇怪的问题,javascript的最佳方式是什么,从大数字开始

var LargeNumber = 5234223;

拆分为数组

var SingleNumberArray = [];

但有一些限制:

  1. 我不希望数组中的任何数字多于X
  2. 出于这个原因,我不想多次使用相同的数字 我不想多次推送MaxValueInArray

    var MaxValueInArray = 43;

  3. 为了使所有数组的总和为LargeNumber?

    乍一看,我认为使用素数这可能很有用,但也许这是一个限制。所以也许更好的方法是创建一个从1到MaxValueArray的随机函数,每个循环生成一个数字,然后将它们推入数组,检查总和是否为起始数,如果不是推数并重新启动,直到数组的总和与起始编号相同,但在这一点上我认为最好检查剩下多少才能得到正确的匹配。因此,如果保持小于MaxValueInArray,我可以直接推送剩余的值。

    问题在于我不知道如何写下这个功能。

    是的,你有更好的想法吗?

1 个答案:

答案 0 :(得分:1)

小心,这可能是计算计划的密集型。

每个数字在0和您设置的数字之间是随机的



var LargeNumber = 5234223;
var MaxValueInArray = 43;
var MinValueInArray = 1;
var SingleNumberArray = [];


while (LargeNumber !== 0) {
  let n = Math.floor(Math.random() * (MaxValueInArray - MinValueInArray + 1)) + MinValueInArray;
  if (LargeNumber -n < 0) continue;
  LargeNumber -= n;
  SingleNumberArray.push(n);
}

console.log(5234223 === SingleNumberArray.reduce((i, j) => i + j))
console.log(SingleNumberArray);
&#13;
&#13;
&#13;