modular_factorial.jl 469 B

123456789101112131415161718192021
  1. #!/usr/bin/julia
  2. # Date: 21 August 2016
  3. # https://github.com/trizen
  4. # An efficient algorithm for computing factorial of a large number, modulus a larger number.
  5. # Algorithm from: https://stackoverflow.com/questions/9727962/fast-way-to-calculate-n-mod-m-where-m-is-prime
  6. function facmod(n::Int64, mod::Int64)
  7. f = 1
  8. for k in n+1:mod-1
  9. f *= k
  10. f %= mod
  11. end
  12. (-1 * invmod(f, mod) + mod) % mod
  13. end
  14. println(facmod(100_000_000, 100_000_037))