freeCodeCamp Challenge Guide: Emirp primes

Emirp primes

Solutions

Solution 1 (Click to Show/Hide)
function isPrime(n) {
  const limit = Math.sqrt(n);
  if (n % 2 === 0)
    return false;
  for (let i = 3; i <= limit; i += 2) {
    if (n % i === 0)
      return false;
  }
  return true;
};

function isEmirp(n) {
  const r = n
    .toString()
    .split("")
    .reverse()
    .join("");
  return n != Number(r) && isPrime(n) && isPrime(r);
};

function emirps(n, showValues = false) {
  const emirps = [];
  if (Array.isArray(n)) {
    // Find emirps in range
    const min = n[0], max = n[1];
    for (let i = min; i <= max; i++) {
      if (isEmirp(i))
        emirps.push(i);
    }
    return showValues ? emirps : emirps.length;
  } else if (typeof(n) === "number") {
    // Find first n emirps
    let curr = 13;
    while (emirps.length < n) {
      if (isEmirp(curr))
        emirps.push(curr);
      curr += 2;
    }
    return showValues ? emirps : emirps[emirps.length - 1];
  }
};
1 Like