--- id: 5900f39c1000cf542c50feae challengeType: 5 title: 'Problem 47: Distinct primes factors' --- ## Description
The first two consecutive numbers to have two distinct prime factors are:
14 = 2 × 7
15 = 3 × 5
The first three consecutive numbers to have three distinct prime factors are:
644 = 2² × 7 × 23
645 = 3 × 5 × 43
646 = 2 × 17 × 19
Find the first four consecutive integers to have four distinct prime factors each. What is the first of these numbers?
## Instructions
## Tests
```yml tests: - text: distinctPrimeFactors(2, 2) should return 14. testString: assert.strictEqual(distinctPrimeFactors(2, 2), 14, 'distinctPrimeFactors(2, 2) should return 14.'); - text: distinctPrimeFactors(3, 3) should return 644. testString: assert.strictEqual(distinctPrimeFactors(3, 3), 644, 'distinctPrimeFactors(3, 3) should return 644.'); - text: distinctPrimeFactors(4, 4) should return 134043. testString: assert.strictEqual(distinctPrimeFactors(4, 4), 134043, 'distinctPrimeFactors(4, 4) should return 134043.'); ```
## Challenge Seed
```js function distinctPrimeFactors(targetNumPrimes, targetConsecutive) { // Good luck! return true; } distinctPrimeFactors(4, 4); ```
## Solution
```js function distinctPrimeFactors(targetNumPrimes, targetConsecutive) { function isPrime(num) { for (let i = 2, s = Math.sqrt(num); i <= s; i++) { if (num % i === 0) { return false; } } return num !== 1; } function getPrimeFactors(num) { const factors = []; for (let i = 2; i <= Math.sqrt(num); i++) { if (num % i === 0) { // found a factor if (isPrime(i)) { factors.push(i); } if (isPrime(num / i) && i !== Math.sqrt(num)) { factors.push(num / i); } } } return factors; } function findConsecutiveNumbers() { let number = 0; let consecutive = 0; while (consecutive < targetConsecutive) { number++; if (getPrimeFactors(number).length >= targetNumPrimes) { consecutive++; } else { consecutive = 0; } } return (number - targetConsecutive) + 1; } return findConsecutiveNumbers(); } ```