repl.it
@shinobushiva/

Sieve of Eratosthenes

JavaScript

No description

fork
loading
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// エラトステネスの篩で素数判定

// 素数判定結果の出力関数
function print(sieve){
	var str = "[";
	for(var i = 0; i < max; i++) {
	    if(sieve[i] === true) {
	        str += i + ",";
	    }
	}
	str += "]";
	console.log(str);
}

var max = 100;
var sieve = [];

//全ての数に対して仮に全部素数としてtrueを代入
for (var i = 0; i < max; i++) {
    sieve.push(true);
}
//最大値の平方根を計算
var sqrt = Math.floor(Math.sqrt(max));

//0,1は素数でないので外す
sieve[0] = false;
sieve[1] = false;

//探索リストの先頭 >= maxの平方根まで、素数リストの倍数をふるい落としていく
for(var i = 2; i <= sqrt; i++) {
    //素数だったら
    if(sieve[i] === true) {
        //その倍数をふるい落とす
        for(var j = i * 2; j <= max; j += i) {
            sieve[j] = false;
        }
    }
}
console.log("Prime numbers until " + max);
print(sieve);
Native Browser JavaScript