JS ジェネレーター関数について

JavaScript入門書のサンプルコードにて、素数のみを出力するジェネレーター関数の質問です。
isPrime関数のfor命令で、Mathオブジェクトで平方根に変換していますが、なぜこの変換が必要なのか
さっぱりわかりません。引数のvalueをそのままつかえばいいのにな、、と思いMathオブジェクトを削除
してvalueのみを記述すると何も出力されませんでした。

有識者の方、できるだけわかりやすく教えていただけると助かります。
よろしくお願い致します。

function* genPrimes() {
let num = 2; //素数の開始値
while(true) {
if(isPrime(num)) {yield num;}
num++;
}
}

function isPrime(value) {
let prime = true;
for(let i=2; i <= Math.floor(Math.sqrt(value)); i++) {
if(value % i === 0) {
prime = false;
break;
}
}
return prime;
}

for(let value of genPrimes()) {
if(value > 100) {break;}
console.log(value);
}

コメントを投稿

0 コメント