質問: false;//割り切れたら素数ではない break; } } return prime; } for(let value of genPrimes()) { //素数が101以上になったら終了 if (value > 100) { break; } //console.log(value); } ``` 上記、while文内の「if(isPrime(num))」この部分のnumの値が2から順当に加算されていき「4」が入った時の、処理に関してなのですが、まず、isPrime関数のfor文の条件式がTRUEとなり、次のif文内で、primeがfalseとなり、if文を抜け、for文の繰り返しに戻り、iの値が3となり条件式がfalseとなり、return prime が実行され、while文に戻ります。次にnumの値が、5となりisPrime関数が実行され、primeにtrueが入り、for文が実行されるのですが、この時、iの値が2のままだと、primeの値がfalseとなってしまいます。iの値が、numの値が4だった時の3のまま継続されるということはないと思うのですが、このままだと素数であるはずの5が返らないということになってしまいます。 この点に関しまして、どうしても理解できないため、ご解説の方お願いしたいです。
回答: 動かしてみましたが問題なかったです。 「2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97」 が選択されましたよ。 追記 === 素数計算 提示のソースそのままで表示部のみ追加した形です。 リンククリックすると97まで素数を表示しますよ。