Skip to content

Instantly share code, notes, and snippets.

@tingplenting
Last active October 16, 2018 04:18
Show Gist options
  • Save tingplenting/13ea50d0c3ae11047d9e5ff8b8d7811d to your computer and use it in GitHub Desktop.
Save tingplenting/13ea50d0c3ae11047d9e5ff8b8d7811d to your computer and use it in GitHub Desktop.

Revisions

  1. tingplenting revised this gist Oct 16, 2018. No changes.
  2. tingplenting created this gist Oct 16, 2018.
    56 changes: 56 additions & 0 deletions tatar1000pi.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    def calcPi(limit): # Generator function
    """
    Prints out the digits of PI
    until it reaches the given limit
    """

    q, r, t, k, n, l = 1, 0, 1, 1, 3, 3

    decimal = limit
    counter = 0

    while counter != decimal + 1:
    if 4 * q + r - t < n * t:
    # yield digit
    yield n
    # insert period after first digit
    if counter == 0:
    yield '.'
    # end
    if decimal == counter:
    print('')
    break
    counter += 1
    nr = 10 * (r - n * t)
    n = ((10 * (3 * q + r)) // t) - 10 * n
    q *= 10
    r = nr
    else:
    nr = (2 * q + r) * l
    nn = (q * (7 * k) + 2 + (r * l)) // (t * l)
    q *= k
    t *= l
    l += 2
    k += 1
    n = nn
    r = nr


    def main(n): # Wrapper function

    # Calls CalcPi with the given limit
    pi_digits = calcPi(n)

    i = 0

    # Prints the output of calcPi generator function
    # Inserts a newline after every 40th number
    for d in pi_digits:
    print(d, end='')
    i += 1
    if i == 40:
    print("")
    i = 0

    if __name__ == '__main__':
    main(1000)