Solution to Project Euler Problem 45: Triangular, pentagonal, and hexagonal - 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.
Updated: Jan. 17, 2021 — Training Time: 2 minutes
Overseen by: Archangel Macsika
All Training Resources
Scroll for more menu list
Topic: Project Euler Problem 45: Triangular, pentagonal, and hexagonal.
Difficulty: Easy.
Objective: 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.
Input: None.
Expected Output: 1533776805.
Sikademy Solution in Java Programming Language
package sikademy;
/**
*
* @author Archangel Macsika
* Copyright (c) Sikademy. All rights reserved
*/
public class SikademyEulerSolution {
public String run() {
int i = 286;
int j = 166;
int k = 144;
while (true) {
long triangle = (long)i * (i + 1) / 2;
long pentagon = (long)j * (j * 3 - 1) / 2;
long hexagon = (long)k * (k * 2 - 1);
long min = Math.min(Math.min(triangle, pentagon), hexagon);
if (min == triangle && min == pentagon && min == hexagon)
return Long.toString(min);
if (min == triangle) i++;
if (min == pentagon) j++;
if (min == hexagon ) k++;
}
}
public static void main(String[] args) {
SikademyEulerSolution solution = new SikademyEulerSolution();
System.out.println(solution.run());
}
}
Sikademy Solution in Python Programming Language
#
# @author Archangel Macsika
# Copyright (c) Sikademy. All rights reserved.
#
def compute():
i = 286
j = 166
k = 144
while True:
triangle = i * (i + 1) // 2
pentagon = j * (j * 3 - 1) // 2
hexagon = k * (k * 2 - 1)
minimum = min(triangle, pentagon, hexagon)
if minimum == max(triangle, pentagon, hexagon):
return str(triangle)
if minimum == triangle: i += 1
if minimum == pentagon: j += 1
if minimum == hexagon : k += 1
if __name__ == "__main__":
print(compute())