132 Large repunit factors -- v2.jl 895 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/julia
  2. # Daniel "Trizen" Șuteu
  3. # Date: 16 November 2021
  4. # https://github.com/trizen
  5. # https://projecteuler.net/problem=132
  6. # Runtime: 1.133s
  7. using Primes
  8. function divisors(n)
  9. d = Int64[1]
  10. for (p,e) in factor(n)
  11. t = Int64[]
  12. r = 1
  13. for i in 1:e
  14. r *= p
  15. for u in d
  16. push!(t, u*r)
  17. end
  18. end
  19. append!(d, t)
  20. end
  21. return sort(d)
  22. end
  23. function prime_znorder(a, n)
  24. for d in divisors(n-1)
  25. if (powermod(a, d, n) == 1)
  26. return d
  27. end
  28. end
  29. end
  30. function p_132()
  31. N = 1e9
  32. C = 40
  33. count = 0
  34. total = 0
  35. p = 7
  36. while true
  37. if (rem(N, prime_znorder(10, p)) == 0)
  38. total += p
  39. count += 1
  40. count >= C && break
  41. end
  42. p = nextprime(p+1)
  43. end
  44. return total
  45. end
  46. println(p_132())