Pierwsze daty

https://xpil.eu/udi8o

Nie chodzi o daty, kiedy zrobiłem coś po raz pierwszy...

... na przykład swoje pierwsze w życiu piwo wypiłem w okolicach drugiego roku studiów...

... tylko o daty w formacie YYYYMMDD będące liczbami pierwszymi. Na przykład dzisiaj jest 20240704, dzieli się przez 2, czyli liczbą pierwszą nie jest. Ale już za niecałe trzy tygodnie będzie 20240723 - i to już jest liczba pierwsza.

Dziś sprawdzimy, czy gęstość dat pierwszych pokrywa się z twierdzeniem o liczbach pierwszych, które mówi, że prawdopodobieństwo, że liczba naturalna N jest pierwsza, wynosi 1/ln(N).

Na początek spróbujemy ustalić gęstość dat pierwszych teoretycznie: wszystkie daty w tym stuleciu oscylują w okolicach dwudziestu milionów, logarytm naturalny z 20M to okolice 16, a więc szansa, że współczesna data będzie liczbą pierwszą wynosi około 1/16. Tym samym oczekiwana liczba dat pierwszych w ciągu roku to 365/16≈23 (w zaokrągleniu).

A teraz napiszemy sobie kod w Pythonie, który to sprawdzi empirycznie:

from sympy import isprime
import datetime

def generate_dates_for_year(year):
    dates = []
    for month in range(1, 13):
        for day in range(1, 32):
            try:
                date = datetime.date(year, month, day)
                date_str = date.strftime('%Y%m%d')
                dates.append(int(date_str))
            except ValueError:
                continue
    return dates

def count_prime_dates_in_year(year):
    dates = generate_dates_for_year(year)
    prime_dates = [d for d in dates if isprime(d)]
    prime_dates_count = sum(1 for date in dates if isprime(date))
    return prime_dates_count

years = range(2000, 2100)
total_prime_dates = sum(count_prime_dates_in_year(year) for year in years)
average_prime_dates_per_year = total_prime_dates / len(years)

print(average_prime_dates_per_year)

Wynik: 21.92≈22

Jeżeli przesuniemy się na kolejne stulecie, dostaniemy 22.05≈22

Jeszcze kolejne: 22.26≈22

W latach 2300-2400 będzie to 21.93 czyli znów ≈22

A dla zakresu 1900 - 2000 dostaniemy ciut ponad 22.5 czyli ≈23. Podobnie dla dwóch poprzednich stuleci.

Średnia za tysiąc lat, między rokiem 1500 a 2500 to 22.33≈22

Czyli oczko mniej, niż wynikałoby to z wymienionego wyżej twierdzenia.

Czemu tak?

Czort wie. Głównie pewnie temu, że daty nie tworzą jednolitego ciągu arytmetycznego, tylko skaczą sobie tak, siak i owak.

A nie, nieprawda. Błąd wynika z nieprawidłowego zaokrąglenia logarytmu z 20M: zamiast 16 należałoby przyjąć 17. I wtedy teoretyczna liczba dat pierwszych w roku wyjdzie 21.4, czyli 21.

A tak naprawdę trzeba przyjąć 16.8, i wtedy wychodzi już całkiem precyzyjne 22 dni pierwsze na rok. Czyli wszystko się zgadza.

Wszyscy kłamią 🙂

Przydatność tej informacji: zero.

No i fajnie.

https://xpil.eu/udi8o

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.