{}
run-icon
main.py
import itertools record = 0 for n in range(1,300): # 209 print("n",n) for a in range(2,n): # print("\ta",a) for b in range(2,n-a): for c in range(2,n-a-b): sols = 0 for x in range(n // a + 1): for y in range((n - a * x)// b + 1): for z in range((n - a * x - b * y) // c + 1): if a*x+b*y+c*z == n: sols += 1 x0 = x y0 = y z0 = z if sols == 1 and x0>1 and y0>1 and z0>1: # print("\tSolution (",a,b,c,")",n,"is",x0,y0,z0) done = False solratio = 1 #how much of the d-loop do we need to reuse? If all of it then we fail for d in range(2,n): if not done: for e in range(d): # using part of the d-loop again if not done: for f in range(a+b-d+1): # d + f <= a + b if not done: if e + f <= n: m = n - e - f # for m in range(n): # if n == m + e + f: sols = 0 for w in range(m // d + 1): for z in range(m // c + 1): if d*w+c*z == m: sols += 1 z1 = z w1 = w if sols == 1 and z1 == z0: # print("\t\t But:",d,e,f,"(",w1,z1,")") done = True if e/float(d) < solratio: solratio = e/float(d) if solratio > record: print("New record",solratio,"for",a,b,c,n) record = solratio if not done: print("Eureka") exit()
Output