#!/usr/bin/env python3 if __name__ == '__main__': target = '3.14159263' # target = '3.14159263589' digits = len(target) - 2 power = pow(10, digits) target = int(float(target) * power) result = 0 divisor = -1 step = 0 count = -1 count2 = 0 subtract = False close = False r4 = 0 while (not close): count = count + 1 divisor = divisor + 2 step = 1 / divisor if subtract == True: result = result - step subtract = False else: result = result + step subtract = True r4 = result * 4 if count2 == 100000: print("Step: %10d | Fraction: 1/%10d = %1.12f | Result: %1.12f | Result * 4: %1.12f" % (count, divisor, step, result, r4)) count2 = 0 if int(r4 * power) == target: close = True count2 = count2 + 1 print("Step: %10d | Fraction: 1/%10d = %1.12f | Result: %1.12f | Result * 4: %1.12f" % (count , divisor, step, result, r4))