-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path012.js
More file actions
44 lines (37 loc) · 1.19 KB
/
012.js
File metadata and controls
44 lines (37 loc) · 1.19 KB
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
/*
Problem 12: Highly divisible triangular number
The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
Let us list the factors of the first seven triangle numbers:
1: 1
3: 1, 3
6: 1, 2, 3, 6
10: 1, 2, 5, 10
15: 1, 3, 5, 15
21: 1, 3, 7, 21
28: 1, 2, 4, 7, 14, 28
We can see that 28 is the first triangle number to have over five divisors.
What is the value of the first triangle number to have over n divisors?
*/
const divisibleTriangleNumber = n => {
const getNumberOfFactors = num => {
const maxToCheck = ~~(Math.sqrt(num));
const factors = [1, num];
for (let i = 2; i <= maxToCheck; i++) {
if (num % i === 0) {
factors.push(i);
factors.push(num / i);
}
}
return factors.length;
}
// loop through triangular numbers to find the one
let triangularNum = 1;
let indInSequence = 1;
while (getNumberOfFactors(triangularNum) < n) {
indInSequence++;
triangularNum = (indInSequence * (indInSequence + 1)) / 2;
}
return triangularNum;
}
console.log(divisibleTriangleNumber(500));