aboutsummaryrefslogtreecommitdiff
path: root/challenge-147/steven-wilson/javascript/ch-02.js
blob: 36fadd5903b4936e50d0a704ca354e079dabece5 (plain)
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
#!/usr/bin/env node
// Week 147 Task 2
// Pentagon Numbers
// Write a sript to find the first pair of Pentagon Numbers
// whose sum and difference are also a Pentagon Number.
// Answer: First pair is 1560090 and 7042750

var pentagonal_numbers = [1]
var pair_found = false
var number = 2

while (!pair_found) {
	let next_pn = pentagonal_number(number)
	for (let i = 0; i < pentagonal_numbers.length; i++) {
		if ((is_pentagonal_number(next_pn - pentagonal_numbers[i])) && 
			(is_pentagonal_number(next_pn + pentagonal_numbers[i]))) {
			console.log('First pair are ' + pentagonal_numbers[i] + ' and ' + next_pn)
			pair_found = true
			break
		}
	}
	pentagonal_numbers.push(next_pn)
	number++
}

function pentagonal_number (number) {
	return ( ( 3 * ( number * number ) ) - number ) / 2
}

function is_pentagonal_number (number) {
	let remainder = ( Math.sqrt( 24 * number + 1 ) + 1 ) % 6;
    if ( remainder > 0 ) {
    	return false
    }
    else {
    	return true
    }
}