123456789101112131415161718192021222324252627282930 |
- #!/usr/bin/ruby
- # Author: Trizen
- # Date: 17 August 2016
- # Translated: 21 March 2023
- # https://github.com/trizen
- # https://projecteuler.net/problem=94
- # Runtime: 0.256s
- var sum = 0
- var limit = 1_000_000_000
- for (var n = 1; true; ++n) {
- var x = ((((7 - 4*sqrtQ(3))**n) + (7 + 4*sqrtQ(3))**n + 1) / 3)
- var y = (((sqrtQ(3) + 2)*(7 - 4*sqrtQ(3))**(n+1) - (sqrtQ(3) - 2)*(7 + 4*sqrtQ(3))**(n+1) - 1) / 3)
- var p1 = (3*x + 1)
- var p2 = (3*y - 1)
- break if ((p1 > limit) && (p2 > limit))
- sum += p1 if (p1 <= limit)
- sum += p2 if (p2 <= limit)
- }
- say sum.real
|