Solution to problem 12 in Julia
This commit is contained in:
parent
394628d98d
commit
330116f70c
65
src/Julia/Problem012.jl
Normal file
65
src/Julia/Problem012.jl
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#=
|
||||||
|
Created on 21 Jul 2021
|
||||||
|
|
||||||
|
@author: David Doblas Jiménez
|
||||||
|
@email: daviddoji@pm.me
|
||||||
|
|
||||||
|
Solution for Problem 12 of Project Euler
|
||||||
|
https://projecteuler.net/problem=12
|
||||||
|
=#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Problem12()
|
||||||
|
#=
|
||||||
|
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 five hundred
|
||||||
|
divisors?
|
||||||
|
=#
|
||||||
|
|
||||||
|
function num_divisors(n)
|
||||||
|
res = floor(sqrt(n))
|
||||||
|
divs = []
|
||||||
|
for i in 1:res
|
||||||
|
if n%i == 0
|
||||||
|
append!(divs,i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if res^2 == n
|
||||||
|
pop!(divs)
|
||||||
|
end
|
||||||
|
return 2*length(divs)
|
||||||
|
end
|
||||||
|
|
||||||
|
triangle = 0
|
||||||
|
for i in Iterators.countfrom(1)
|
||||||
|
triangle += i
|
||||||
|
if num_divisors(triangle) > 500
|
||||||
|
return string(triangle)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
println("Time to evaluate Problem 12:")
|
||||||
|
@time Problem12()
|
||||||
|
println("")
|
||||||
|
println("Result for Problem 12: ", Problem12())
|
Loading…
x
Reference in New Issue
Block a user