--- id: 5900f39c1000cf542c50feae title: 'Problem 47: Distinct primes factors' challengeType: 5 forumTopicId: 302145 dashedName: 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 = 22 × 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? # --hints-- `distinctPrimeFactors(2, 2)` should return a number. ```js assert(typeof distinctPrimeFactors(2, 2) === 'number'); ``` `distinctPrimeFactors(2, 2)` should return 14. ```js assert.strictEqual(distinctPrimeFactors(2, 2), 14); ``` `distinctPrimeFactors(3, 3)` should return 644. ```js assert.strictEqual(distinctPrimeFactors(3, 3), 644); ``` `distinctPrimeFactors(4, 4)` should return 134043. ```js assert.strictEqual(distinctPrimeFactors(4, 4), 134043); ``` # --seed-- ## --seed-contents-- ```js function distinctPrimeFactors(targetNumPrimes, targetConsecutive) { return true; } distinctPrimeFactors(4, 4); ``` # --solutions-- ```js function distinctPrimeFactors(targetNumPrimes, targetConsecutive) { function numberOfPrimeFactors(n) { let factors = 0; // Considering 2 as a special case let firstFactor = true; while (n % 2 == 0) { n = n / 2; if (firstFactor) { factors++; firstFactor = false; } } // Adding other factors for (let i = 3; i < Math.sqrt(n); i += 2) { firstFactor = true; while (n % i == 0) { n = n / i; if (firstFactor) { factors++; firstFactor = false; } } } if (n > 1) { factors++; } return factors; } let number = 0; let consecutive = 0; while (consecutive < targetConsecutive) { number++; if (numberOfPrimeFactors(number) >= targetNumPrimes) { consecutive++; } else { consecutive = 0; } } return number - targetConsecutive + 1; } ```