$|=3,141592;sub _ {print@_}sub o{_++$O[0 ];_ 0for 1..$#O}sub O{$;=int $=/10,'0/^ ^';if($;<9) {_$_ for @O;;@O=() ;0}push @O,$;;0 ,;push@ O,'.'if $^==1; 0;if($; ==10){ print ,o,@O=( )}}$?= 1000000 ;$-=10* (q/@O= digits of pi =10/,1) *int($? /3)+1;$ _=2for@ ,[0..$-] ,;for$^ (1..$?){ $"=$-;$O =0;until ($"<0){$/= 2*$"+1;$/= 10if$/==1;$==10*$,[$"]+$O;$, [$"]=$=%$/;$O=int($=/$/ )*$"--,10}O}o |
This Perl program computes the first million digits of pi
(including the "3" before the decimal point) and prints them.
You can modify the number of digits to be calculated by editing
the "1000000" in the center of the code.
The program implements the "Spigot Algorithm"
which is described in
this document
together with several sample implementations far more efficient than mine.
Be careful: the program is a number cruncher
and will extremely slow down the performance
of your computer. Moreover my implementation
is awful slow (see below).
|