def minimal_solution(D): # Find smallest integer whose square > D. root = int(math.sqrt(D)) + 1 while True: left = root * root - 1 if left % D == 0: if primes.is_square(left / D): return root root += 1
def solve66(max_D): largest = 0 for D in range(max_D): if not primes.is_square(D): min_solution = minimal_solution(D) if min_solution > largest: print min_solution largest = min_solution return largest