freeCodeCamp/curriculum/challenges/portuguese/10-coding-interview-prep/project-euler/problem-47-distinct-primes-...

1.9 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
5900f39c1000cf542c50feae Problema 47: Fatores primos distintos 5 302145 problem-47-distinct-primes-factors

--description--

Os dois primeiros números consecutivos a terem dois fatores primos distintos são:

14 = 2 × 7
15 = 3 × 5

Os três primeiros números consecutivos a ter três fatores primos distintos são:

644 = 22 × 7 × 23
645 = 3 × 5 × 43
646 = 2 × 17 × 19

Encontre os primeiros quatro números inteiros consecutivos que têm quatro fatores primos distintos. Qual é o primeiro desses números?

--hints--

distinctPrimeFactors(2, 2) deve retornar um número.

assert(typeof distinctPrimeFactors(2, 2) === 'number');

distinctPrimeFactors(2, 2) deve retornar 14.

assert.strictEqual(distinctPrimeFactors(2, 2), 14);

distinctPrimeFactors(3, 3) deve retornar 644.

assert.strictEqual(distinctPrimeFactors(3, 3), 644);

distinctPrimeFactors(4, 4) deve retornar 134043.

assert.strictEqual(distinctPrimeFactors(4, 4), 134043);

--seed--

--seed-contents--

function distinctPrimeFactors(targetNumPrimes, targetConsecutive) {

  return true;
}

distinctPrimeFactors(4, 4);

--solutions--

// Initalize factor count with seive
const NUMFACTORS = Array(135000).fill(0);
(function initFactors(num) {
  for (let i = 2; i < num; i++)
    if (NUMFACTORS[i] === 0)
      for (let j = i; j < num; j += i)
        NUMFACTORS[j]++;
})(135000);

function distinctPrimeFactors(targetNumPrimes, targetConsecutive) {
  let numConsecutive = 0;
  let currNumber = 10;
  while (numConsecutive < targetConsecutive) {
    if (NUMFACTORS[currNumber] === targetNumPrimes)
      numConsecutive++;
    else
      numConsecutive = 0;
    currNumber++;
  }
  return currNumber - targetConsecutive;
}