fork download
  1. import time
  2.  
  3. def find_pythagorean(s):
  4. """ Yield all Pythagorean triples that sum to positive integer s """
  5. if s % 2:
  6. return # No triples sum to an odd number
  7. hs2 = s * s / 2
  8. for a in xrange(1, int(s * (1 - .5**.5)) + 1):
  9. if (hs2 - s * a) % (s - a) == 0:
  10. b = (hs2 - s * a) / (s - a)
  11. yield a, b, s - a - b
  12.  
  13. def test(s):
  14. start = time.time()
  15. print list(find_pythagorean(s))
  16. print 'Time taken', time.time() - start
  17.  
  18. test(1000)
  19. test(1356780)
  20.  
  21.  
Success #stdin #stdout 0.31s 7900KB
stdin
Standard input is empty
stdout
[(200, 375, 425)]
Time taken 0.000113010406494
[(226130, 542712L, 587938L), (339195, 452260L, 565325L)]
Time taken 0.306120872498