Iterating the first 10 million digits of pi
Continuing from my last blog post : Did you know that the 100-trillionth decimal place of π (pi) is 0? That is according to work done by Google in 2022. It took them 157 days to calculate 100 trillion digits of pi. It would be cool to know the 10 digits before and the 10 digits after. Numbers and patterns and coincidences and serendipity fascinates me. It was the usual quiet morning for me. I found that I could download the first 10 million digits of pi and I set out with the help of Bard and my curiousity to see what unusual, interesting or outstandish things I could find. Like how many times my birthday 2305 occurs or the the next 2 digits after the sequence formed with the last 3 play whe numbers. You can get pretty creative with what you look for in pi like in this youtubes - I found Amongi in the digits of pi
Ha! I found the last 10 of the first 100 trillion digits of pi when I saw another video by the same guy. They are 3095295560. First glance and nothing stands out except that 5 occurs the most and 3 times. It is nice that they have tools to calculate and verify the results with an extremely small chance of error.
The link I used was - http://www.cs.princeton.edu/introcs/data/pi-10million.txt
I tried to download directly from Chrome mobile but it kept crashing. I used the following code to download from python instead.
import requests
url = "http://www.cs.princeton.edu/introcs/data/pi-10million.txt"
try:
response = requests.get(url)
response.raise_for_status() # Raise an exception for error status codes
text_content = response.text
with open("pi10million.txt", "w") as file: # Customize filename if needed
file.write(text_content)
print("Text file saved successfully!")
except requests.exceptions.RequestException as e:
print("An error occurred:", e)
This is an example of the type of probing I have done so far. The code runs reasonably fast on my 5 year old budget android phone.
with open("pi10million.txt", "r") as file:
pi_string = file.read() # Read the entire file as a string
# Find all starting positions of "230580"
occurrences = [i for i in range(len(pi_string)) if pi_string.startswith("230580", i)]
# Calculate and print the number of digits between occurrences
if len(occurrences) > 1:
for i in range(1, len(occurrences)):
distance = occurrences[i] - occurrences[i-1] - 6 # Subtract the length of "230580" (6 digits)
print(f"Number of digits between occurrences {i} and {i+1}: {distance}")
else:
print("No consecutive occurrences of '230580' found in the file.")
Comments