素数 とは? 素数 とは、それ自体と 1 以外の整数で正確に割り切れない 1 より大きい整数です (例: 2、3、5、7、11)。 素数 5 は約数が 1 と 5 しかないので です。 素数 4 は約数が 1、2、4 であるため 。 、素数ではありません string が の場合に を返し、数値が でない場合に を返す関数を作成しましょう。 素数 true 素数 false isPrime(3); // true isPrime(9); // false 関数を作ってみよう function isPrime(num) { } は 1 より大きい数です。したがって、1 未満の数は 素数 素数ではありません。 function isPrime(num) { if (num <= 1) return false; } isPrime(-5); // false は、除算後の剰余を取得するために使用されます。残りを残さずに を他の因数 (1 とそれ自体を除く) に分割できるかどうかを確認します。 モジュロ演算子 num function isPrime(num) { if (num <= 1) return false; for (let i=2; i<num; i++) { if (num%i !== 0) return false; } return true; } 2 は であることを でください。 素数 忘れない function isPrime(num) { if (num <= 1) return false; if (num === 2) return true; for (let i=2; i<num; i++) { if (num%i === 0) return false; } return true; } isPrime(5); //true isPrime(9); //false 膨大な数がある場合はどうなりますか? isPrime(56669900033); 関数の実行は遅くなります。 例えば、 平方根を使用することで、プロセスを短縮できます。 数は です の平方根は です。これは、 はそれ自体と 1 でしか割り切れないため、 は ことを意味します。したがって、 まで反復する代わりに、 の平方根である まで反復することができます。 121 。121 11 素数 121 素数ではない 2 から 121 121 11 は、数値の平方根を見つけます。 Math.sqrt() function isPrime(num) { if (num <= 1) return false; if (num === 2) return true; let numSqrt = Math.sqrt(num); for (let i=2; i<=numSqrt; i++) { if (num%i === 0) return false; } return true; } isPrime(5); //true isPrime(121); //false ソフィー・ジェルマン・プライム p と 2p+1 の両方が素数の場合、p は です。たとえば Sophie Germain 素数 、2、3、5、11、23、29、41、53、83、89… は 、 5 素数で 5*2+1=11 も です。つまり、 と は両方とも 11 素数 5 11 ソフィー・ジェルマンの素数です。 から までの の配列を返す関数を作成しましょう。 2 n Sophie Germain 素数 前の例の 関数を使用して、数値が素数かどうかを確認します。 isPrime() function getGermainPrimes(n) { let result = []; // an array of Sophie Germain prime numbers (our result) for (let i = 0; i <= n; i++) { if (isPrime(i) && isPrime(i*2 + 1)) { //if both i and 2i+1 are prime result.push(i); } } return result; } getGermainPrimes(100); // [2, 3, 5, 11, 23, 29, 41, 53, 83, 89] https://www.youtube.com/watch?v=XOgA8s2y7-Y/?embedable=true これがお役に立てば幸いです。