Skip to content

Instantly share code, notes, and snippets.

@Nikorasu
Forked from GavalasDev/piG3.py
Created August 17, 2022 17:02
Show Gist options
  • Save Nikorasu/dd3282aefffa3825244ba4ceaee9f11b to your computer and use it in GitHub Desktop.
Save Nikorasu/dd3282aefffa3825244ba4ceaee9f11b to your computer and use it in GitHub Desktop.
A faster spigot algorithm for the digits of Pi.
"""
This algorithm is based on an unproven conjecture but successfully produces at least the first 1 million digits.
Read more about it here: https://www.gavalas.dev/blog/spigot-algorithms-for-pi-in-python/
"""
def gospers_pi_unproven():
q,r,t,i = 1, 180, 60, 2
while True:
u,y = 3*(3*i+1)*(3*i+2), (q*(27*i-12)+5*r)//(5*t)
yield y
q,r,t,i = 10*q*i*(2*i-1),10*u*(q*(5*i-2)+r-y*t),t*u,i+1
pi = gospers_pi_unproven()
print([next(pi) for _ in range(10)])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment