Solution to problem 45 in Julia

This commit is contained in:
David Doblas Jiménez 2021-09-15 16:28:19 +02:00
parent 27b277187a
commit c8403e627e

45
src/Julia/Problem045.jl Normal file
View File

@ -0,0 +1,45 @@
#=
Created on 15 Sep 2021
@author: David Doblas Jiménez
@email: daviddoji@pm.me
Solution for Problem 45 of Project Euler
https://projecteuler.net/problem=45
=#
using BenchmarkTools
function pentagonal(n)
return Int(n*(3*n-1)/2)
end
function hexagonal(n)
return Int(n*(2*n-1))
end
function Problem45()
#=
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(3n1)/2 1, 5, 12, 22, 35, ...
Hexagonal Hn=n(2n1) 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.
=#
pentagonal_list = Set(pentagonal(n) for n in 2:100_000)
# all hexagonal numbers are also triangle numbers!
hexagonal_list = Set(hexagonal(n) for n in 2:100_000)
ans = sort!(collect(intersect(hexagonal_list, pentagonal_list)))
# First one is already known
return ans[2]
end
println("Time to evaluate Problem 45:")
@btime Problem45()
println("")
println("Result for Problem 45: ", Problem45())