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