Generace π v pythonu

Tento článek pro vás napsal sadru 11. 03. 2020
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 95x

Komentáře