小数(Prime Number)を求めます
4897 ワード
language: 緒論
1より大きい自然数 1と自分だけがミネラルウォーター 簡単な方法
時間複雑度O(N) ショートカット
時間複雑度O(√N) n/a.結論
エラトステネスの体説明 は、特定の範囲内で小数を検索する最も速い方法です. ですが、特定の数が少数かどうかを判断すると、速度が非常に遅くなります.
JavaScript
緒論
特定の数の小数を決定するために関数を実装することを望んでいます.
少数とは何かを理解してみましょう.
「小数」(Prime Number)とは?
1つの大きな自然数のうちの1つと自分だけの数です.
(合成数は1より大きい自然数の非小数であることに注意してください.)
これにより、以下のように少数の条件を定義できます.
簡単な方法
小数Nは1とそれ自体が約数なので、2からN-1で割ると残りは0ではありません.
これにより、単純な少数の判別関数を作成できます.
数値Nを2からn-1で割った場合、残りの値が0であるかどうかを確認します.function isPrimeNumber (input) {
if (input <= 1) {
return false;
}
for (let i=2; i<input; i++) {
if (input%i == 0) {
return false;
}
}
return true;
}
function isPrimeNumber (input) {
if (input <= 1) {
return false;
}
for (let i=2; i<input; i++) {
if (input%i == 0) {
return false;
}
}
return true;
}
ショートカット
これは小数判別関数を高速に回転させる方法である.
√√√Nより大きい数は合成数か少数しかありません.(自分でやってみればわかる)
したがって、数字Nを2から√Nで割った場合、残存値が0であるか否かがチェックされる.function isPrimeNumber (input) {
if (input <= 1) {
return false;
}
const sqrt = Math.sqrt(input);
for (let i=2; i<=sqrt; i++) {
if (input%i == 0) {
return false;
}
}
return true;
}
function isPrimeNumber (input) {
if (input <= 1) {
return false;
}
const sqrt = Math.sqrt(input);
for (let i=2; i<=sqrt; i++) {
if (input%i == 0) {
return false;
}
}
return true;
}
n/a.結論
特定の数が小数であると判断すると、第2の方法はより速くなります.
+エラトスのふるい
Reference
この問題について(小数(Prime Number)を求めます), 我々は、より多くの情報をここで見つけました https://velog.io/@heony/prime-numberテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol