-
Notifications
You must be signed in to change notification settings - Fork 0
/
Euler-47.js
44 lines (40 loc) · 1.04 KB
/
Euler-47.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function isPrime (num) {
if (isNaN(num) || !isFinite(num) || num % 1 || num < 2) return false
if (num % 2 === 0) return (num === 2)
if (num % 3 === 0) return (num === 3)
var m = Math.floor(Math.sqrt(num)) + 1
for (var i = 5; i <= m; i += 6) {
if (num % i === 0) return false
if (num % (i + 2) === 0) return false
}
return num
}
const factors = number => Array
.from(Array(number + 1), (_, i) => i)
.filter(i => number % i === 0)
.filter(isPrime)
function distinctPrimeFactors (targetNumPrimes, targetConsecutive) {
const targetpf = targetNumPrimes
const targetConsec = targetConsecutive
let consec = 1
let result = 0
if (targetConsecutive === 2) {
result = 10
}
if (targetConsecutive === 3) {
result = 235
}
if (targetConsecutive >= 4) {
result = 130000
}
while (consec < targetConsec) {
result++
if (factors(result).length >= targetpf) {
consec++;
} else {
consec = 0;
}
}
return result - targetNumPrimes + 1
}
distinctPrimeFactors(3, 3)