isPrime.js

Codewars 알고리즘 풀이


Problem

  • Define a function that takes an integer argument and returns logical value ‘true’ or ‘false’ depending on if the integer is a prime.
    • 정수가 소수(prime number)인지에 따라 논리값 ‘true’ 또는 ‘false’를 반환한다.
  • A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself.
    • 소수(prime number)는 1보다 큰 자연수이며, 1 이외의 양의 제수(divisor, 나눗수)가 없다.



Solution 01

function isPrime(n) {
  if (n < 2) return false;
  
  for (let i = 2; i <= Math.sqrt(n); i++) {
    if (n % i === 0) {
      return false;
    }
  }
  return true;
}

isPrime(0);  // false
isPrime(1);  // false
isPrime(2);  // true
isPrime(3);  // true
isPrime(4);  // false
isPrime(5);  // true
isPrime(6);  // false
isPrime(7);  // true
isPrime(8);  // false


Solution 02

function isPrime(n) {
  for (let i = 2; i <= Math.sqrt(n); i++) {
    if (n % i === 0) {
      return false;
    }
  }
  return n > 1;
}

isPrime(0);  // false
isPrime(1);  // false
isPrime(2);  // true
isPrime(3);  // true
isPrime(4);  // false
isPrime(5);  // true
isPrime(6);  // false
isPrime(7);  // true
isPrime(8);  // false


Solution 03

function isPrime(n) {
  let i = 1;
  
  while (i++ < n - 1) {
    if (n % i === 0) {
      return false;
    }
  }
  return n > 1;
}

isPrime(0);  // false
isPrime(1);  // false
isPrime(2);  // true
isPrime(3);  // true
isPrime(4);  // false
isPrime(5);  // true
isPrime(6);  // false
isPrime(7);  // true
isPrime(8);  // false