Last active
October 16, 2018 04:18
-
-
Save tingplenting/13ea50d0c3ae11047d9e5ff8b8d7811d to your computer and use it in GitHub Desktop.
menghitung pi seirbu digit setelah koma. taruh jumlah digit di main(1000)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment