Files
euler/python/e206.py

37 lines
838 B
Python

import math
def is_square(apositiveint):
"""From: https://stackoverflow.com/a/2489519"""
x = apositiveint // 2
seen = set([x])
while x * x != apositiveint:
x = (x + (apositiveint // x)) // 2
if x in seen:
return False
seen.add(x)
return True
def canditates(current_value, depth):
if depth <= 0:
yield current_value
else:
d = 10**depth
for i in range(10):
for new_value in canditates(current_value - i * d, depth - 2):
yield new_value
def euler_206():
c = 1929394959697989990
for i, c in enumerate(canditates(c, 17)):
if is_square(c):
return int(math.sqrt(c))
if __name__ == "__main__":
solution = euler_206()
print("e206.py: " + str(solution))
assert solution == 1389019170