-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path45.php
59 lines (57 loc) · 1.41 KB
/
45.php
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!--
Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
Triangle Tn=n(n+1)/2 1, 3, 6, 10, 15, ...
Pentagonal Pn=n(3n−1)/2 1, 5, 12, 22, 35, ...
Hexagonal Hn=n(2n−1) 1, 6, 15, 28, 45, ...
It can be verified that T285 = P165 = H143 = 40755.
Find the next triangle number that is also pentagonal and hexagonal.
-->
<?php $startTime = microtime(true);
function getHexagonal($input){
return $input*((2*$input)-1);
}
function isTriangle($input){
$number = (sqrt((8*$input)+1)-1)/2;
if (floor($number) == $number)
{
return true;
}
return false;
}
function isPentagonal($input){
$number = (sqrt((24*$input)+1)+1)/6;
if (floor($number) == $number)
{
return true;
}
return false;
}
//also built these functions, will probably be useful in future problems
// function getTriangle($input){
// return ($input*($input+1))/2;
// }
// function getPentagonal($input){
// return ($input*((3*$input)-1))/2;
// }
// function isHexagonal($input){
// $number = (sqrt((8*$input)+1)+1)/4;
// if (floor($number) == $number)
// {
// return true;
// }
// return false;
// }
$result = 0;
$n = 144;//start with 143+1
while ($result==0) {
$num = getHexagonal($n);
if (isPentagonal($num) && isTriangle($num)) {
$result = $num;
}
$n++;
}
$answer = $result;
$endTime = microtime(true);
echo "Answer: ",$answer,"\nTime: ",($endTime - $startTime),"\n";
// Answer: 1533776805
// Time: 0.022s