Проверка простых чисел в JavaScript: методы и примеры кода

Вот функция JavaScript, проверяющая, является ли число простым:

Метод 1: базовая итерация

function isPrime(num) {
  if (num <= 1) {
    return false;
  }

  for (let i = 2; i < num; i++) {
    if (num % i === 0) {
      return false;
    }
  }

  return true;
}

Метод 2: оптимизированная итерация

function isPrime(num) {
  if (num <= 1) {
    return false;
  }
  if (num <= 3) {
    return true;
  }
  if (num % 2 === 0 || num % 3 === 0) {
    return false;
  }
  for (let i = 5; i * i <= num; i += 6) {
    if (num % i === 0 || num % (i + 2) === 0) {
      return false;
    }
  }
  return true;
}

Метод 3: Решето Эратосфена

function sieveOfEratosthenes(num) {
  const primes = new Array(num + 1).fill(true);
  primes[0] = primes[1] = false;
  for (let i = 2; i <= Math.sqrt(num); i++) {
    if (primes[i]) {
      for (let j = i * i; j <= num; j += i) {
        primes[j] = false;
      }
    }
  }
  return primes;
}
function isPrime(num) {
  const primes = sieveOfEratosthenes(num);
  return primes[num];
}

В методе 1 мы перебираем от 2 до num - 1и проверяем, делит ли какое-либо число num. Если мы находим делитель, мы возвращаем false. Если делитель не найден, мы возвращаем true.

В методе 2 мы оптимизируем итерацию следующим образом:

  • Проверка того, что numменьше или равно 1, и если да, то возвращается false.
  • Проверка, меньше ли numили равно 3, и если да, то возвращается true.
  • Проверка того, делится ли numна 2 или 3, и если да, то возвращается false.
  • Итерация от 5 до квадратного корня из numс шагом 6 и проверка, делится ли numна iили i + 2. Если какой-либо делитель найден, мы возвращаем false.

В методе 3 мы используем алгоритм «Решето Эратосфена» для генерации логического массива простых чисел до num. Затем мы проверяем, присутствует ли numв массиве простых чисел.