Rubyでn桁の円周率を求める
検証用に使っていた物です。
len = ARGV[0].to_i B = 10 ** len B2 = B << 1 pi = (len * 8 + 1).step(3, -2).inject(B) {|a, i| (i >> 1) * (a + B2) / i} - B puts "3.#{pi}"
# time ruby pi.rb 100 3.141592653589793238462643383279502884197169399375105820974944592307816406286208 9986280348253421170679 real 0m0.045s user 0m0.027s sys 0m0.007s
10万桁位なら2分前後で行けるはずです。
※ウチのPCはショボイのでもっと早いかも