2016-12-17 1 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)); 

우선 다음은 코드입니까? 그리고 난 return 문을 가지고 통지. 즉, 시간 복잡성을 평가하기 위해 함수에 숫자를 전달하는 코드의 마지막 줄을 포함시켜야한다는 의미입니까? 또는 전달 된 값없이이를 수행하고 여러 경우에 대해 계산할 수 있습니까?

+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

관련 문제