Advertisement
Guest User

pi

a guest
Jul 9th, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.69 KB | None | 0 0
  1. import time
  2.  
  3.  
  4. N = 200000
  5.  
  6.  
  7. ## arctan(1/n)をTaylor展開で求める
  8. def arctan(p, n):
  9.     x = p//n
  10.     nn = n*n
  11.     c = 1
  12.     s = x
  13.     k = 1
  14.     while x > 0:
  15.         x //= nn
  16.         k += 2
  17.         c = -c
  18.         s += c*(x//k)
  19.     return s
  20.  
  21. ## 円周率を求める
  22. ## 整数部分「3」も含む仮数表現の長整数で返します
  23. def pi_mantissa(digit, redund=10):
  24.     p = 10**digit
  25.     q = 10**redund
  26.     p *= q
  27.     pi = 4*(12*arctan(p,18)+8*arctan(p,57)-5*arctan(p,239))
  28.     pi //= q
  29.     return pi
  30.  
  31. start_time = time.time()
  32. result = pi_mantissa(N)
  33. end_time = time.time()
  34. print(result)
  35.  
  36. print("実行時間 = {0:.3f} 秒".format(end_time - start_time))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement