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

2.0 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
5900f39c1000cf542c50feae Problema 47: Fattori primi distinti 1 302145 problem-47-distinct-primes-factors

--description--

I primi due numeri consecutivi ad avere due distinti fattori primi sono:

14 = 2 × 7
15 = 3 × 5

I primi tre numeri consecutivi che hanno tre fattori primi distinti sono:

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

Trova i primi quattro interi consecutivi ad avere quattro distinti fattori primi ciascuno. Qual è il primo di questi numeri?

--hints--

distinctPrimeFactors(2, 2) dovrebbe restituire un numero.

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

distinctPrimeFactors(2, 2) dovrebbe restituire 14.

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

distinctPrimeFactors(3, 3) dovrebbe restituire 644.

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

distinctPrimeFactors(4, 4) dovrebbe restituire 134043.

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

--seed--

--seed-contents--

function distinctPrimeFactors(targetNumPrimes, targetConsecutive) {

  return true;
}

distinctPrimeFactors(4, 4);

--solutions--

function distinctPrimeFactors(targetNumPrimes, targetConsecutive) {
  const primeLimit = targetNumPrimes * targetConsecutive * 10000;
  const numFactors = Array(primeLimit).fill(0);

  let numConsecutive = 0;
  for (let i = 2; i < primeLimit; i++) {
    if (numFactors[i] === targetNumPrimes) {
      // Current number is composite with target num factors
      numConsecutive++;
      if (numConsecutive === targetConsecutive) {
        return i - numConsecutive + 1;
      }
    } else {
      // Current number is not matching composite
      numConsecutive = 0;
      if (numFactors[i] === 0) {
        // Current number is prime
        for (let j = i; j < primeLimit; j += i) {
          numFactors[j]++;
        }
      }
    }
  }
}