pythonのジェネレータで円周率
Pythonのジェネレータの勉強で、円周率を求めるようなジェネレータを作ってみた。
(アルゴリズムはwikipediaに載っていたウォリスの式)
#!/usr/bin/env python def pi(): numerator = 2.0 denominator = 1.0 while True: yield numerator/denominator if numerator < denominator: numerator += 2 else: denominator += 2 p = pi() res = 1.0 for i in range(10000000): res *= next(p) print res * 2
$ time ./pi.py 3.14159249651 real 0m8.430s user 0m8.253s sys 0m0.160s
速度も精度もひどい^^