显示特定范围内的所有素数

时间:2013-09-05 15:19:28

标签: javascript primes

我希望看到从开头(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);

我不明白什么是问题。

1 个答案:

答案 0 :(得分:3)

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

所以有两个答案:

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

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