479 Roots on the Rise.sf 353 B

1234567891011121314151617181920
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 21 February 2018
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=479
  7. # Runtime: 19.709s (previously: 36.014s)
  8. var n = 1e6
  9. var m = 1000000007
  10. say sum(1..n, {|k|
  11. with (mulmod(k, k, m) - 1) {|p|
  12. divmod(p * ((-1)**n * powmod(p, n, m) - 1), p+1, m)
  13. }
  14. })%m