diff --git a/src/Julia/Problem058.jl b/src/Julia/Problem058.jl new file mode 100644 index 0000000..067e2b4 --- /dev/null +++ b/src/Julia/Problem058.jl @@ -0,0 +1,58 @@ +#= +Created on 11 Oct 2021 + +@author: David Doblas Jiménez +@email: daviddoji@pm.me + +Solution for Problem 58 of Project Euler +https://projecteuler.net/problem=58 +=# + +using BenchmarkTools +using Primes + +function Problem58() + #= + Starting with 1 and spiralling anticlockwise in the following way, + a square spiral with side length 7 is formed. + + 37 36 35 34 33 32 31 + 38 17 16 15 14 13 30 + 39 18 5 4 3 12 29 + 40 19 6 1 2 11 28 + 41 20 7 8 9 10 27 + 42 21 22 23 24 25 26 + 43 44 45 46 47 48 49 + + It is interesting to note that the odd squares lie along the bottom right + diagonal, but what is more interesting is that 8 out of the 13 numbers + lying along both diagonals are prime; that is, a ratio of 8/13 ≈ 62%. + + If one complete new layer is wrapped around the spiral above, a square + spiral with side length 9 will be formed. If this process is continued, + what is the side length of the square spiral for which the ratio of primes + along both diagonals first falls below 10%? + =# + + ratio = 1 + corners = [] + side = 0 + num = 1 + + while ratio > 0.1 + side += 2 + for _ in 1:4 + num += side + push!(corners, isprime(num)) + end + ratio = sum(corners) / length(corners) + end + + return side + 1 +end + + +println("Time to evaluate Problem 58:") +@btime Problem58() +println("") +println("Result for Problem 58: ", Problem58())