from math import * def pi_frac(min, max): min_denom = None min_error = 1.0 for b in xrange(min, max): a = round(pi * b) error = (log(b) + log(a) + 2) / -log(abs(a/b - pi)) if min_denom == None or error < min_error: min_error = error min_denom = b return min_denom x = pi_frac(1, 10**7) print int(round(x*pi)), x