Generace π v pythonu
Kategorie: Programování
import decimal
# jak přesný by měl být výpočet (max 100)
digits = 56
def pi_gen():
global x
x = (3,1)
i = 2
while True:
a = (i+0)*(i+1)*(i+2)
b = (i+2)*(i+3)*(i+4)
x = x[0]*a + x[1]* 4, x[1]*a
x = x[0]*b + x[1]*–4, x[1]*b
yield x
i += 4
# pro porovnání
pi = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
pi = pi[:digits+1] #aby se neporovnávala zbytečná čísla
decimal.setcontext(decimal.Context(prec=digits))
for x in pi_gen():
# tohle dělení je rychlé ale neúčinné pro pi
print("\ni:",x[0]/x[1])
# Decimal je třída která zařizuje perfektní dělení
# tento výpočet zpomaluje kód nejvíce
print("t:",decimal.Decimal(x[0])/decimal.Decimal(x[1]))
print("r:",pi,)
Zobrazeno 138x