# Source: https://stackoverflow.com/questions/9004789/1000-digits-of-pi-in-python import time def make_pi(): q, r, t, k, m, x = 1, 0, 1, 1, 3, 3 for j in range(10000): if 4 * q + r - t < m * t: yield m q, r, t, k, m, x = ( 10 * q, 10 * (r - m * t), t, k, (10 * (3 * q + r)) // t - 10 * m, x, ) else: q, r, t, k, m, x = ( q * k, (2 * q + r) * x, t * x, k + 1, (q * (7 * k + 2) + r * x) // (t * x), x + 2, ) t1 = time.time() pi_array = [] for i in make_pi(): pi_array.append(str(i)) pi_array = pi_array[:1] + ['.'] + pi_array[1:] pi_array_str = ''.join(pi_array) print('PI:', pi_array_str) print('dT:', time.time() - t1)