087 Prime power triples.jl 817 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/julia
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # https://projecteuler.net/problem=87
  6. # Runtime: 0.632s
  7. using Primes
  8. limit = 50_000_000
  9. max = isqrt(limit)
  10. primes = Int64[2]
  11. for i in 1:2:max
  12. isprime(i) && push!(primes, i)
  13. end
  14. function count_primes(primes, limit)
  15. seen = Dict{Int64, Bool}()
  16. len = length(primes)
  17. count = 0
  18. for p in primes
  19. for j in 1:len
  20. p^2 + primes[j]^3 < limit || break
  21. for k in 1:len
  22. n = p^2 + primes[j]^3 + primes[k]^4
  23. n < limit || break
  24. if !haskey(seen, n)
  25. seen[n] = true
  26. count += 1;
  27. end
  28. end
  29. end
  30. end
  31. count
  32. end
  33. println(count_primes(primes, limit))