Pierwsza lepsza
„Każda następna liczba jest sumą dwu poprzednich” – ta reguła określa ciąg Fibonacciego (cF), który zaczyna się od dwóch jedynek: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,… Ten klasyczny ciąg dał początek nieskończenie wielu innym, zwanym uogólnionymi cF, rządzącymi się taką samą zasadą, ale zaczynającymi się parą dowolnych liczb. Najbardziej znany to ciąg Lucasa, który startuje od jedynki i trójki: 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843,… Zarówno w cF, jak i w cL już na początku pojawiają się liczby pierwsze, choć szybko stają się rzadkością.
Problem jest następujący: jakimi dwiema liczbami powinien zaczynać się ucF, aby pierwsza liczba pierwsza pojawiła się w nim jak najpóźniej – przy założeniu, że obie liczby początkowe są mniejsze od 100 i oczywiście nie pierwsze.
Łatwo zauważyć, że trzeba wykluczyć ciągi zaczynające się liczbami, które mają taki sam wspólny dzielnik (większy niż 1), bo wtedy liczba pierwsza w ogóle się nie pojawi. Krótko pisząc, dwie liczby startowe powinny być względnie pierwsze.
Próbowałem bawić się liczbami i najlepszy start jaki udało mi się uzyskać po kilku próbach to 4 i 45. Przy takiej parze liczba pierwsza melduje się jako ósma: 4, 45, 49, 94, 143, 237, 380, 617,… Nie wątpię, że może lokować się znacznie lepiej, czyli dalej, ale jak daleko?
Adresatami problemu są tym razem przede wszystkim programiści (przepraszam „piechurów”).
Komentarze z prawidłowym rozwiązaniem ujawniane są wieczorem w przeddzień kolejnego wpisu (z błędnym zwykle od razu). Wpisy pojawiają się co 7 dni.
Komentarze
21 => 86, 39, …, 623401
69 => 65, 112, …, 11066489611627237
685 => 143, 142, …, 9130689082079448586257706272647681239604711286121317698925163097516362326855401846047007576063709090828825439563191774013162219876718056841646167
Best starting pair (non-primes < 100, relatively prime): (38, 81)
First prime appears at index: 19
First prime number found: 436853
Last 5 numbers before the first prime: [39391, 63736, 103127, 166863, 269990]
Najlepszy wybór (przy założeniach: obie liczby < 100, złożone i względnie pierwsze) to:
86, 39 — w tej kolejności, pierwsza liczba pierwsza pojawia się dopiero na miejscu 20 (licząc od zera). Kolejne wyrazy do momentu pojawienia się pierwszej liczby pierwszej:
86, 39, 125, 164, 289, 453, 742, 1195, 1937, 3132, 5069, 8201, 13270, 21471, 34741, 56212, 90953, 147165, 238118, 385283, 623401 (pierwsza liczba pierwsza).
Sprawdziłem wszystkie pary liczb złożonych < 100 będących względnie pierwszymi i (86, 39) jest jedyną parą osiągającą tak późne pierwsze wystąpienie liczby pierwszej (indeks 20). Odwrócenie kolejności (39, 86) daje pierwszą liczbę pierwszą już na indeksie 3, więc kolejność ma znaczenie.
Najlepsza para < 1000: (143, 142)
Pierwsza liczba pierwsza pojawia się dopiero na indeksie 684 (licząc od zera) ma 145 cyfr i jest pierwsza.
9130689082079448586257706272647681239604711286121317698925163097516362326855401846047007576063709090828825439563191774013162219876718056841646167
Odwrócenie kolejności (142, 143) psuje efekt — pierwsza liczba pierwsza już na indeksie 23.
Dobre przykłady z różnych progów
< 300: (119, 299) → pierwsza liczba pierwsza na indeksie 525 (wyraz ma 112 cyfr).
< 1000:
(143, 142) → 684 (rekord z moich testów)
(722, 989) → 596
(956, 221) → 157
Krótko:
≤100: rekord (86, 39) → indeks pierwszej liczby pierwszej 20.
≤1000: rekord (143, 142) → indeks 684.
≤10 000: nowy rekord (1936, 3349) → indeks 1609 (to „najlepsza” w tym szerszym zakresie).
„Druga najlepsza” dla ≤10 000 to (7890, 7909) → indeks 1319.
indeksy są liczone od 0.
#1: a0=1936, a1=3349 | indeks=1609 | cyfry=340
3708609793711840786158755181430109525102701337014468779497036950742593464608100367272272577748982457911044716816745278971166683179752988659592202962429197241108757358343361733644079385625438445539786490002876301641743036913167101075437241461835549446665091214643685928169929646686559439436410962015876155159489113234983512006637351224180997
#2: a0=7890, a1=7909 | indeks=1319 | cyfry=280
2581802450732554969228630884825402567496918461354257094041997868379860531301056139658749770553244214751696601339244009104183486911006027821409900262287612216699758785012738029557446360027867052610496190173814558664912594824934879236388189601665342479872061054631186031300439870339
#3: a0=7735, a1=9458 | indeks=1173 | cyfry=249
884058561127370975438675801353622564111528546453182105085542308233516205769973240047552641716505094508484924313170122999645039231786632879661109289464405681063800295572088314015331246759214474642797826895344039631883536359071683015400534766164842959
#4: a0=3207, a1=9389 | indeks=957 | cyfry=204
509901997666435639279558322323486875679149411135549687970157760188325005534475624028997601220701475254446586870169103010322761675264599734797934141043863802408383043011178124218292705449157973331523309637
#5: a0=1994, a1=8321 | indeks=929 | cyfry=198
602821763834885030161129127665124882074422496703100565842859601898928280367625950557287960579231920805907337904501495444336550603981463483815555257039631800662816678990756270753877306807251396971243
#6: a0=4088, a1=1921 | indeks=916 | cyfry=195
538656201520984717647539449235774193612043945884647040784367564362618607371964960512516880158545100901407683767172531301595687919761602810695404710962675147294235717836641710670273098609454412307
#7: a0=8857, a1=5952 | indeks=867 | cyfry=185
79559224472517787117592936602448773283981257980459054886227103177891147128115750506552844990816094045050822870777359261447588696267171783687910605585107098905523817410232164747231092697
#8: a0=6770, a1=7569 | indeks=848 | cyfry=181
8753585850943988638436067872827440422531171501280230079804108187900861968486753302348412080476987963495090129411980629311603354893745610925028509095912577380038168357230866106058079
#9: a0=3679, a1=4031 | indeks=820 | cyfry=175
6607659718313090351680687208491947931018767882944526219871176460665273179935421544013961724668520553098045786730087352461531367550193097665192768849479971053813661620121482139
#10: a0=403, a1=5630 | indeks=800 | cyfry=171
407319928568870375432218854915519432149333352831848874268445911376819028142574889929171240283619941214339360200107509433371663918092518966719829431091023675073843088396253
Startując od liczb 86 i 39, dostajemy ciąg, w którym dopiero 21. liczba jest pierwsza:
86, 39, 125, 164, 289, 453, 742, 1195, 1937, 3132, 5069, 8201, 13270, 21471, 34741, 56212, 90953, 147165, 238118, 385283, 623401.
Wśród liczb startowych z przedziału [1, 99], najlepszy wynik to 21 i powyższa para liczb jest jedyną, która go osiąga.
Startując od liczb 32 i 63 powstaje ciąg:
32,63,95,158,253,411,664,1075,1739,2814,4553,7367,11920,19287,31207,50494,81701…
… w którym na pozycji 17 (17 to liczba pierwsza) pojawia się liczba pierwsza 81701.
Poprzedni komentarz zakładał, że sprawdzamy liczby pierwsze mniejsze niż 100tys.
Dla liczb pierwszych mniejszych od miliona mamy ciąg zaczynający się od liczb 38,81.
dalej następuje:
119,200,319,519,838,1357,2195,3552,5747,9299,15046,24345,39391,63736,103127,166863,269990,436853,…
20ty element to liczba pierwsza 436853.
To jeszcze nie koniec…
38, 81, 119, 200, 319, 519, 838, 1357, 2195, 3552, 5747, 9299, 15046, 24345, 39391, 63736, 103127, 166863, 269990, 436853
Pierwsza liczba pierwsza jest dopiero na 20 pozycji.
38,81 > [17 liczb ] > 436 853
a więc 20. liczbą w ciągu jest liczba pierwsza
Sprawdziłem każdy z układów możliwych dwóch pierwszych liczb z podanego zakresu, od [2, 3] do [98, 99]. Posłużyłem się wygenerowaną tablicą wszystkich liczb pierwszych nie większych od 23 000 000. (czas liczenia tablicy to ok. 45 minut)
26 => 29,43,72,115,187,302,489,791,1280,2071,3351,5422,8773,14195,22968,37163,60131,97294,157425,254719,412144,666863,1079007,1745870,2824877,4570747
30? => 18,47,65,112,177,289,466,755,1221,1976,3197,5173,8370,13543,21913,35456,57369,92825,150194,243019,393213,636232,1029445,1665677,2695122,4360799,7055921,11416720,18472641,29889361,
30? => 40,47,87,134,221,355,576,931,1507,2438,3945,6383,10328,16711,27039,43750,70789,114539,185328,299867,485195,785062,1270257,2055319,3325576,5380895,8706471,14087366,22793837,36881203,
30? => 22,59,81,140,221,361,582,943,1525,2468,3993,6461,10454,16915,27369,44284,71653,115937,187590,303527,491117,794644,1285761,2080405,3366166,5446571,8812737,14259308,23072045,37331353,
29? => 47,65,112,177,289,466,755,1221,1976,3197,5173,8370,13543,21913,35456,57369,92825,150194,243019,393213,636232,1029445,1665677,2695122,4360799,7055921,11416720,18472641,29889361,
22 => 61,71,132,203,335,538,873,1411,2284,3695,5979,9674,15653,25327,40980,66307,107287,173594,280881,454475,735356,1189831
25 => 43,72,115,187,302,489,791,1280,2071,3351,5422,8773,14195,22968,37163,60131,97294,157425,254719,412144,666863,1079007,1745870,2824877,4570747
20 => 38,81,119,200,319,519,838,1357,2195,3552,5747,9299,15046,24345,39391,63736,103127,166863,269990,436853
29? => 59,81,140,221,361,582,943,1525,2468,3993,6461,10454,16915,27369,44284,71653,115937,187590,303527,491117,794644,1285761,2080405,3366166,5446571,8812737,14259308,23072045,37331353
26 => 37,85,122,207,329,536,865,1401,2266,3667,5933,9600,15533,25133,40666,65799,106465,172264,278729,450993,729722,1180715,1910437,3091152,5001589,8092741
29? => 47,87,134,221,355,576,931,1507,2438,3945,6383,10328,16711,27039,43750,70789,114539,185328,299867,485195,785062,1270257,2055319,3325576,5380895,8706471,14087366,22793837,36881203,
26 => 67,97,164,261,425,686,1111,1797,2908,4705,7613,12318,19931,32249,52180,84429,136609,221038,357647,578685,936332,1515017,2451349,3966366,6417715,10384081
20 => 90,97,187,284,471,755,1226,1981,3207,5188,8395,13583,21978,35561,57539,93100,150639,243739,394378,638117
Pierwsza liczba każdej pozycji oznacza ilość wyrazów ciągu. Jeśli jest ona zakończona pytajnikiem a na końcu ciągu brakuje przecinka, to ostatnia liczba ciągu nie jest zweryfikowana z tablicą liczb pierwszych. Może być nią lub nie jest tak, to trzeba by dopiero sprawdzić, ale nie jestem pewien, czy zasoby pamięci mojego komputera okażą się wystarczające dla takiego zadania. Może jutro…
Żadna z dwu liczb startowych nie powinna być pierwsza, a ponadto nie ma warunku, że druga musi być większa od pierwszej.
mp
Wszystkie inne warianty mają mniej niż 20 liczb w ciągu kończącym się liczbą pierwszą.
W poprzednim komentarzu uwaga o przecinku powinna zawierać zaprzeczenie (nie).
Znalazłem dwa rozwiązania w których liczba pierwsza pojawia się na 26tym miejscu w ciągu:
29,43,72,115,187,302,489,791,1280,2071,3351,5422,8773,14195,22968,37163,60131,97294,157425,254719,412144,666863,1079007,1745870,2824877,4570747,…
67,97,164,261,425,686,1111,1797,2908,4705,7613,12318,19931,32249,52180,84429,136609,221038,357647,578685,936332,1515017,2451349,3966366,6417715,10384081,…
Jak widać warto wychylić się poza pierwszy milion 😉
Dwie liczby startowe nie powinny być pierwsze (ściślej: pierwsza nie powinna być żadna z nich).
mp
Ależ oczywiście, że byłem ciekaw, co dzieje się dalej (wykraczając poza ramy zadania i okienka komentarza):
19,179,198,377,575,952,1527,2479,4006,6485,10491,16976,27467,44443,71910,116353,188263,304616,492879,797495,1290374,2087869,3378243,5466112,8844355,14310467,23154822,37465289,60620111,98085400,158705511,256790911,415496422,672287333,1087783755,1760071088,2847854843,4607925931,7455780774,12063706705,19519487479,31583194184,51102681663,82685875847,133788557510,216474433357,350262990867,566737424224,917000415091,1483737839315,2400738254406,3884476093721,6285214348127,10169690441848,16454904789975,26624595231823,43079500021798,69704095253621,112783595275419,182487690529040,295271285804459,477758976333499,773030262137958,1250789238471457,
…z liczbą pierwszą 1250789238471457 na pozycji 64.
Doszedłem do granicy możliwości komputera. Po zoptymalizowaniu algorytmu tworzącego tablicę liczb pierwszych czas jej wyliczania zmniejszył się do kilku sekund, ale tak duża ilość liczb zajęła ok. 55% pamięci i dalej nie będę eksperymentował, bo musiałbym zakres tablicy liczb pierwszych więcej niż podwoić. To zapowiada piękną katastrofę, na którą nie jestem gotów.
Poprzednio miałem do obróbki jeszcze sześć wariantów. Mimo znacznego zwiększenia zakresu tablicy żaden z nich się nie poddał. Może wygląda to tak, jakby przy tak dużych liczbach gęstość liczb pierwszych zmalała utrudniając trafienie w którąś, a może przyczyna jest inna, wynikająca z nieznanej mi matematycznej reguły…
Na pewno jesteśmy z tym sześcioosobowym peletonem powyżej 30. Niektóre z końcowych liczb dopisywałem ręcznie, bo ani parzysta, ani podzielna przez 3 lub 5, już na pierwszy rzut oka nie może być liczbą pierwszą.
Stan na teraz do wglądu:
26 => 29, 43, 72, 115, 187, 302, 489, 791, 1280, 2071, 3351, 5422, 8773, 14195, 22968, 37163, 60131, 97294, 157425, 254719, 412144, 666863, 1079007, 1745870, 2824877, 4570747
32? => 18, 47, 65, 112, 177, 289, 466, 755, 1221, 1976, 3197, 5173, 8370, 13543, 21913, 35456, 57369, 92825, 150194, 243019, 393213, 636232, 1029445, 1665677, 2695122, 4360799, 7055921, 11416720, 18472641, 29889361, 48362002, 78251363,
32? => 40, 47, 87, 134, 221, 355, 576, 931, 1507, 2438, 3945, 6383, 10328, 16711, 27039, 43750, 70789, 114539, 185328, 299867, 485195, 785062, 1270257, 2055319, 3325576, 5380895, 8706471, 14087366, 22793837, 36881203, 59675040, 96556243,
32? => 22, 59, 81, 140, 221, 361, 582, 943, 1525, 2468, 3993, 6461, 10454, 16915, 27369, 44284, 71653, 115937, 187590, 303527, 491117, 794644, 1285761, 2080405, 3366166, 5446571, 8812737, 14259308, 23072045, 37331353, 60403398, 97734751,
34? => 47, 65, 112, 177, 289, 466, 755, 1221, 1976, 3197, 5173, 8370, 13543, 21913, 35456, 57369, 92825, 150194, 243019, 393213, 636232, 1029445, 1665677, 2695122, 4360799, 7055921, 11416720, 18472641, 29889361, 48362002, 78251363, 126613365, 204864728, 331478093,
22 => 61, 71, 132, 203, 335, 538, 873, 1411, 2284, 3695, 5979, 9674, 15653, 25327, 40980, 66307, 107287, 173594, 280881, 454475, 735356, 1189831
25 => 43, 72, 115, 187, 302, 489, 791, 1280, 2071, 3351, 5422, 8773, 14195, 22968, 37163, 60131, 97294, 157425, 254719, 412144, 666863, 1079007, 1745870, 2824877, 4570747
20 => 38, 81, 119, 200, 319, 519, 838, 1357, 2195, 3552, 5747, 9299, 15046, 24345, 39391, 63736, 103127, 166863, 269990, 436853
31? => 59, 81, 140, 221, 361, 582, 943, 1525, 2468, 3993, 6461, 10454, 16915, 27369, 44284, 71653, 115937, 187590, 303527, 491117, 794644, 1285761, 2080405, 3366166, 5446571, 8812737, 14259308, 23072045, 37331353, 60403398, 97734751,
26 => 37, 85, 122, 207, 329, 536, 865, 1401, 2266, 3667, 5933, 9600, 15533, 25133, 40666, 65799, 106465, 172264, 278729, 450993, 729722, 1180715, 1910437, 3091152, 5001589, 8092741
31? => 47, 87, 134, 221, 355, 576, 931, 1507, 2438, 3945, 6383, 10328, 16711, 27039, 43750, 70789, 114539, 185328, 299867, 485195, 785062, 1270257, 2055319, 3325576, 5380895, 8706471, 14087366, 22793837, 36881203, 59675040, 96556243,
26 => 67, 97, 164, 261, 425, 686, 1111, 1797, 2908, 4705, 7613, 12318, 19931, 32249, 52180, 84429, 136609, 221038, 357647, 578685, 936332, 1515017, 2451349, 3966366, 6417715, 10384081
20 => 90, 97, 187, 284, 471, 755, 1226, 1981, 3207, 5188, 8395, 13583, 21978, 35561, 57539, 93100, 150639, 243739, 394378, 638117
Tyle liczb pierwszych wyliczył komputer i taka była wartość największej z nich:
Primes.Count = 2 318 966
Primes.MaxValue = 37 555 551
Algorytm kodu jest bardzo krótki i prosty. Mogę go tutaj udostępnić, gdyby ktoś był zainteresowany.
18,47 mi wyszło na programiku napisanym na komórce
aaaa dobra bo 47 pierwsze
no to 86, 39
Mnie też wychodzi tak jak policzył bubka111, że początek 18,47 daje ciąg w którym liczba pierwsza pojawia się na 71 miejscu ale nie sprawdzałem tego jeszcze.
[18, 47, 65, 112, 177, 289, 466, 755, 1221, 1976, 3197, 5173, 8370, 13543, 21913, 35456, 57369, 92825, 150194, 243019, 393213, 636232, 1029445, 1665677, 2695122, 4360799, 7055921, 11416720, 18472641, 29889361, 48362002, 78251363, 126613365, 204864728, 331478093, 536342821, 867820914, 1404163735, 2271984649, 3676148384, 5948133033, 9624281417, 15572414450, 25196695867, 40769110317, 65965806184, 106734916501, 172700722685, 279435639186, 452136361871, 731572001057, 1183708362928, 1915280363985, 3098988726913, 5014269090898, 8113257817811, 13127526908709, 21240784726520, 34368311635229, 55609096361749, 89977407996978, 145586504358727, 235563912355705, 381150416714432, 616714329070137, 997864745784569, 1614579074854706, 2612443820639275, 4227022895493981, 6839466716133256, 11066489611627237]
I ja potwierdzam: 71 => 18, 47, 65, 112, 177, 289, 466, 755, 1221, 1976, 3197, 5173, 8370, 13543, 21913, 35456, 57369, 92825, 150194, 243019, 393213, 636232, 1029445, 1665677, 2695122, 4360799, 7055921, 11416720, 18472641, 29889361, 48362002, 78251363, 126613365, 204864728, 331478093, 536342821, 867820914, 1404163735, 2271984649, 3676148384, 5948133033, 9624281417, 15572414450, 25196695867, 40769110317, 65965806184, 106734916501, 172700722685, 279435639186, 452136361871, 731572001057, 1183708362928, 1915280363985, 3098988726913, 5014269090898, 8113257817811, 13127526908709, 21240784726520, 34368311635229, 55609096361749, 89977407996978, 145586504358727, 235563912355705, 381150416714432, 616714329070137, 997864745784569, 1614579074854706, 2612443820639275, 4227022895493981, 6839466716133256, 11066489611627237