Advertisement
danchaofan

Euler #587

Jan 4th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.73 KB | None | 0 0
  1. from numpy import pi
  2. from numpy import sqrt
  3. full = (4 - pi)/4
  4.  
  5.  
  6. def intersection(circles):
  7.     a = (circles**2 + 1)/circles**2
  8.     b = -2/circles - 2
  9.     c = 1
  10.     return (-b - sqrt(b**2 - 4*a*c))/(2*a)
  11.  
  12.  
  13. def integrate(f, a, b, dx=0.00001):
  14.     area = 0
  15.     while a <= b:
  16.         area += f(a)*dx
  17.         a += dx
  18.     return area
  19.  
  20.  
  21. def height(circles):
  22.     return intersection(circles)/circles
  23.  
  24. for circleNum in range(1, 10**5):
  25.     xCoord = intersection(circleNum)
  26.     rightHalf = integrate(lambda x: -sqrt(1-(x-1)**2)+1, xCoord, 1)
  27.     leftHalf = 0.5*xCoord*height(circleNum)
  28.     fractionArea = (rightHalf + leftHalf)/full
  29.     print(fractionArea)
  30.     if fractionArea < 0.001:
  31.         print(circleNum)
  32.         quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement