アルゴリズムと時間の複雑さ:Big-Oタグ、白駿1929小数点を求めます


白駿1929少数を救う
従来の方法は時間複雑度O(N)である.²)時間内に問題を解決できない.
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
input = input[0].split(' ').map(item => +item);

solution(input);

function solution(input) {
  for (let i = input[0]; i <= input[1]; i++) {
    solution2(i);
  }

  function solution2(num) {
    if (num === 1) return;
    for (let i = 2; i < num - 1; i++) {
      if (!(num % i)) return;
    }
  
    console.log(num);
    return;
  }
}
以下のブログを参考にして、質問に答えるには2つの方法があります.
1.平方根のみチェック
2.エラトストネスのふるいを使う
白駿1929号は小数-Nodeを求めますjs|サイダーデータベースCIDER DEVLOG
[伯俊/1929/nodejs]小数JavaScriptを求めます
アルゴリズムとは?
¥¥¥¥
△一つの問題も非常に多くのアルゴリズムで解決することができる.
解析時間の複雑さはinput n解析アルゴリズムの問題解決にどれくらいの時間がかかるかに等しい.
この定義はbig-Oタグで定義できます.
Big-Oマークとは?
時間複雑度では,nの単位が与えられた式に最も影響を及ぼすことが重要である.
24791721ʌO(1)-一定時間:入力値がnの場合、アルゴリズムは一歩で問題を解決します.≪ログ時間|Log Time|emdw≫:入力値がnの場合、問題を解決するために必要なステップは特定の要因によって減少します.24791723σO(n)-直線時間:問題を解決するステップ数と入力値nは1:1の関係にある.24791724πO(n^2)-第2時間:問題を解決するステップ数は入力値nの二乗である.24791725υO(C^n)-指数時間:問題を解決するステップ数は、所与の定数Cのn二乗である.上記で定義した時間複雑度の例
var n = 16; -- 입력값 n 이 16일 때
O (1) = 1 step "(awesome!)" -- O(1)는 시간복잡도가 1입니다.
O (log n) = 4 steps  "(awesome!)" -- O(log n)는 시간복잡도가 4입니다. (log 의 밑이 2라고 가정)
O (n) = 16 steps "(pretty good!)" -- O(n)는 시간복잡도가 16
O(n^2) = 256 steps "(uhh..we can work with this?)" -- O(n^2)는 시간복잡도가 256
O(2^n) = 65,536 steps "(...)"
ソース:(翻訳)分かりやすいアルゴリズム:時間の複雑さと大きなOタグ–Captain Pangyo