601 Divisibility streaks.sf 359 B

1234567891011121314151617181920
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 30 April 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=601
  7. # Runtime: 0.115s
  8. func count(n, k) {
  9. var L = lcm(1..n)
  10. var period = lcm(L, n + 1)/L
  11. var count = floor((k - 2) / L)
  12. count - floor(count / period)
  13. }
  14. say sum(1..31, {|k| count(k, 4**k) })