symbian-qemu-0.9.1-12/python-2.6.1/Demo/scripts/pi.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #! /usr/bin/env python
       
     2 
       
     3 # Print digits of pi forever.
       
     4 #
       
     5 # The algorithm, using Python's 'long' integers ("bignums"), works
       
     6 # with continued fractions, and was conceived by Lambert Meertens.
       
     7 #
       
     8 # See also the ABC Programmer's Handbook, by Geurts, Meertens & Pemberton,
       
     9 # published by Prentice-Hall (UK) Ltd., 1990.
       
    10 
       
    11 import sys
       
    12 
       
    13 def main():
       
    14     k, a, b, a1, b1 = 2L, 4L, 1L, 12L, 4L
       
    15     while 1:
       
    16         # Next approximation
       
    17         p, q, k = k*k, 2L*k+1L, k+1L
       
    18         a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
       
    19         # Print common digits
       
    20         d, d1 = a//b, a1//b1
       
    21         while d == d1:
       
    22             output(d)
       
    23             a, a1 = 10L*(a%b), 10L*(a1%b1)
       
    24             d, d1 = a//b, a1//b1
       
    25 
       
    26 def output(d):
       
    27     # Use write() to avoid spaces between the digits
       
    28     # Use str() to avoid the 'L'
       
    29     sys.stdout.write(str(d))
       
    30     # Flush so the output is seen immediately
       
    31     sys.stdout.flush()
       
    32 
       
    33 if __name__ == "__main__":
       
    34     main()