784 Reciprocal Pairs.sf 474 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/ruby
  2. # Reciprocal Pairs
  3. # https://projecteuler.net/problem=784
  4. func F(n) {
  5. var total = 0
  6. for a in (2 .. n) {
  7. var v = (a*a - 1)
  8. v.divisors.each {|d|
  9. d <= a || break
  10. var p = (a + d)
  11. var q = (a + v/d)
  12. if (p <= n) {
  13. total += p+q
  14. }
  15. else {
  16. break
  17. }
  18. }
  19. }
  20. return total
  21. }
  22. say F(5)
  23. say F(10**2)
  24. say F(2 * 1e6)