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.
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.