Next Up Previous Hi Index

Python: pi greco con N=2000 decimali

Per il calcolo di π bisogna importare la libreria matematica mpmath ed impostare come segue il numero dei decimali:

# ---- mymp.py --------
# Avviare con python mymp.py (enter)	
from mpmath import *
mp.dps = 2000
print pi

Questo semplicissimo codice produce una singola stringa monoriga di π con i 2000 decimali prescelti (N può essere incrementato a dismisura), ma è di difficile lettura, per cui si rende necessario splittarlo a gruppi di cifre.
In questa maniera.
Si copia-incolla il valore ottenuto isolando la parte decimale (senza "3.") nel codice separoo.py e chiamandolo k

# -------- separoo.py ---------
# Avviare con python separoo.py (enter)
import itertools

def split_columns(iterable, size):
    c = itertools.count()
    for k, g in itertools.groupby(iterable, lambda item: c.next() // size):
        yield list(g)

def pretty(number, size=8, per_line=8):
    groups = split_columns(split_columns(str(number), size), per_line)
    lines = (' '.join(''.join(group) for group in line) for line in groups)
    return '\n'.join(lines)
    
k = 141592653589793238462643383279502884197169399375105820974944592307...

print pretty(k,8,8)
Le variabili size e per_line, settati sopra a (8,8), spezzano la mega-stringa a gruppi di 8 caratteri e 8 gruppi per riga. Ed ecco il risultato:

$ python separoo.py  // 2000 decimali
3.
14159265 35897932 38462643 38327950 28841971 69399375 10582097 49445923
07816406 28620899 86280348 25342117 06798214 80865132 82306647 09384460
95505822 31725359 40812848 11174502 84102701 93852110 55596446 22948954
93038196 44288109 75665933 44612847 56482337 86783165 27120190 91456485
66923460 34861045 43266482 13393607 26024914 12737245 87006606 31558817
48815209 20962829 25409171 53643678 92590360 01133053 05488204 66521384
14695194 15116094 33057270 36575959 19530921 86117381 93261179 31051185
48074462 37996274 95673518 85752724 89122793 81830119 49129833 67336244
06566430 86021394 94639522 47371907 02179860 94370277 05392171 76293176
75238467 48184676 69405132 00056812 71452635 60827785 77134275 77896091
73637178 72146844 09012249 53430146 54958537 10507922 79689258 92354201
99561121 29021960 86403441 81598136 29774771 30996051 87072113 49999998
37297804 99510597 31732816 09631859 50244594 55346908 30264252 23082533
44685035 26193118 81710100 03137838 75288658 75332083 81420617 17766914
73035982 53490428 75546873 11595628 63882353 78759375 19577818 57780532
17122680 66130019 27876611 19590921 64201989 38095257 20106548 58632788
65936153 38182796 82303019 52035301 85296899 57736225 99413891 24972177
52834791 31515574 85724245 41506959 50829533 11686172 78558890 75098381
75463746 49393192 55060400 92770167 11390098 48824012 85836160 35637076
60104710 18194295 55961989 46767837 44944825 53797747 26847104 04753464
62080466 84259069 49129331 36770289 89152104 75216205 69660240 58038150
19351125 33824300 35587640 24749647 32639141 99272604 26992279 67823547
81636009 34172164 12199245 86315030 28618297 45557067 49838505 49458858
69269956 90927210 79750930 29553211 65344987 20275596 02364806 65499119
88183479 77535663 69807426 54252786 25518184 17574672 89097777 27938000
81647060 01614524 91921732 17214772 35014144 19735685 48161361 15735255
21334757 41849468 43852332 39073941 43334547 76241686 25189835 69485562
09921922 21842725 50254256 88767179 04946016 53466804 98862723 27917860
85784383 82796797 66814541 00953883 78636095 06800642 25125205 11739298
48960841 28488626 94560424 19652850 22210661 18630674 42786220 39194945
04712371 37869609 56364371 91728746 77646575 73962413 89086583 26459958
13390478 02759

Next Up Previous Hi Index