sigma_function.jl 746 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/julia
  2. # Trizen
  3. # Date: 12 February 2017
  4. # https://github.com/trizen
  5. # Implementation of the sigma function (sum of the divisors).
  6. # See also:
  7. # https://en.wikipedia.org/wiki/Divisor_function
  8. using Primes
  9. function divisor_sum(n, x=1)
  10. if (x == 0) # optimization
  11. tau = 1
  12. for (p,e) in factor(n)
  13. tau *= (e+1)
  14. end
  15. return tau
  16. end
  17. sigma = 1
  18. for (p,e) in factor(n)
  19. s = 1
  20. q = p^x
  21. for j in 1:e
  22. s += q^j
  23. end
  24. sigma *= s
  25. end
  26. return sigma
  27. end
  28. println(divisor_sum(5040, 0)) # 60
  29. println(divisor_sum(1234)) # 1854
  30. println(divisor_sum(99000)) # 365040
  31. println(divisor_sum(99000, 2)) # 15359172920