2016-12-17 8 views
-1

私は自分でBig O表記を勉強し始めました。私は、素数をチェックする関数を書いて時間の複雑さを理解しようとするまで、基本を理解していると思っていました。私は内部の複数の条件文は任意の違いを作る場合は、それは一度だけカウントされているかどうかで混乱私のコードの時間の複雑さは何ですか?

function isPrime(num){ 
    if (num === 1 || num%1 !== 0){ //Checks if num is 1 or decimal 
     return false; 
    } 
    else{ 
     for (var i = 2; i < num; i++) { 
      if (num%i === 0 && i!== 1){ //Checks if any numbers from 2 to are divisible by num 
       return false 
      } 
     } 
    } 
    return true; 
} 

console.log(isPrime(6)); 

まず最初に:ここでは、コードですか?そして、私は3つのリターンステートメントを持っていることに気づく。それは、時間の複雑さを評価するために関数に数値を渡すコードの最後の行を含める必要があるということですか?あるいは、渡された価値なしでそれを行い、異なるケースについて計算することはできますか?

+1

タイトルを実際にあなたの問題や質問を説明するようにしてください。 – csmckelvey

+0

@takendarkkそれを指摘してくれてありがとう。それは私の初めての投稿です、私は私のタイトルドラフトを編集することを忘れていました。これでより明確になることを願っています。 –

答えて

0
function isPrime(n){ 
    if (n === 1 || n%1 !== 0){ //Checks if num is 1 or decimal 
     return false; 
    } 
    for (var i = 2; i < n; i++) { 
     if (n%i === 0){ 
      return false 
     } 
    } 
    return true; 
} 

私は複雑さを変更するが、ビッグ-Oで苦労のコードが読みやすくなりしないいくつかの小さなリファクタリングを行いました。 n > 1ためだから、

、N:orime、操作の数は、次のとおりです。

enter image description here

だからあなたのアルゴリズムの複雑さはO(n)です。

+0

これは '%'操作の時間の複雑さを考慮していません – Shai

関連する問題