Advertisement
danchaofan

Euler #64

Nov 21st, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.66 KB | None | 0 0
  1. def propagate(root):
  2.     approximate, numerator, period, seen = int(root**0.5), 1, 0, []
  3.     modifier = approximate
  4.     while True:
  5.         denominator = root - modifier**2
  6.         denominator /= numerator
  7.         modifier *= -1
  8.         modifier -= int((modifier+approximate)/denominator)*denominator
  9.         numerator = denominator
  10.         if [numerator, denominator, modifier] in seen:
  11.             return period % 2 == 1
  12.         period += 1
  13.         seen.append([numerator, denominator, modifier])
  14.  
  15.  
  16. answer = 0
  17. testlist = [x for x in range(2, 10**4+1) if int(x**0.5) != x**0.5]
  18. for x in testlist:
  19.     if propagate(x):
  20.         answer += 1
  21. print(answer)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement