125 Palindromic sums.sf 627 B

1234567891011121314151617181920212223242526272829303132
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 25 July 2021
  4. # https://github.com/trizen
  5. # Find the sum of all the numbers less than 10^8 that are both palindromic and can be written as the sum of consecutive squares.
  6. # https://projecteuler.net/problem=125
  7. # Runtime: 4.334s
  8. func p125(limit) {
  9. var s = limit.isqrt
  10. var sums = Set()
  11. for a in (1 .. s) {
  12. var sum = a.sqr
  13. for b in (a+1 .. s) {
  14. sum += b.sqr
  15. #var sum = faulhaber_range(a, b, 2)
  16. break if (sum >= limit)
  17. sums << sum if sum.is_palindrome
  18. }
  19. }
  20. sums.sum
  21. }
  22. say p125(1e8)