Copying Guido because he's the actual original author of this code.  I
remember it being in a very early intro to Python, which I can't find
now.  And it used to be included in a Python distribution's Demo
directory.  But, e.g., you can see it in this mailing list message
from Guido in 1994, during an early discussion of what eventually
became Python's generators.  Guido, do you remember where this
algorithm came from?

    http://legacy.python.org/search/hypermail/python-1994q2/0429.html
    scroll down to point "6)"

[kirby urner <kirby.ur...@gmail.com>]
> I'm still interested in finding more bibliographic sources for this one, not
> necessarily in Python syntax i.e. did Euler come up with this or who?
>
>
> def pi_digits():
>
>     k, a, b, a1, b1 = 2, 4, 1, 12, 4
>     while True:
>         p, q, k = k*k, 2*k+1, k+1
>         a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
>         d, d1 = a/b, a1/b1
>         while d == d1:
>             yield int(d)
>             a, a1 = 10*(a%b), 10*(a1%b1)
>             d, d1 = a/b, a1/b1
>
> [  http://mail.python.org/pipermail/edu-sig/2012-December/010728.html ]
>
>>>> pi = pi_digits()
>>>> "".join([str(next(pi)) for i in range(100)]))
> '3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067'
>
> ... so far what we know is some high school student handed it in for
> homework.
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
https://mail.python.org/mailman/listinfo/edu-sig

Reply via email to