1

我想查看从开头(2)到结尾的所有素数(根据我的设置)。

var nums = [2];
for (var i = 3; i < 103; i++) {
    for (var x = 0; x < nums.length; x++) {
        if (i % nums[x] != 0) nums.push(i);
    }
}
$("body").append(nums);

我不明白这是什么问题。

4

1 回答 1

3

每次不能除以任何先前的数字时,您将“i”添加到“nums”。所以加了“4”,因为它不能被“3”整除。'5' 加了 3 次,因为它不能除以 '2'、'3' 和 '4','6' 加了 4 次,因为它不能除以 '4'(1 次出现)和 '5'( 3 次)。所以实际上你的算法所做的是将所有数字多次相加,每个数字上的“nums”数组的大小大约加倍。

所以有两个答案:

  1. 它不像你所期望的那样工作,因为你添加到 nums 'when any' 而不是 'when all'

  2. 它崩溃是因为它需要具有 2^100 个元素的数组(这是很多内存)。

于 2013-09-05T15:42:25.810 回答