|
|
Grzegorz GPS Świderski Pomyłka jest w obliczeniach, a nie w rozumowaniu. To znaczy, że myśli, tylko liczyć nie umie. Do tego nie potrzeba jej więcej uczyć, ale wystarczy połączyć z Wolframem. Niemniej widać duże różnice między wersją 3 a 4, co znaczy, że nauka nie idzie w las. Więc wszystko, co napisałem w notce, pozostaje w mocy. |
|
|
Dark Regis "Pomyłka" nie polega na tym, że maszyna się zwyczajnie pomyliła. Ona po prostu liczy w jakimś Pythonie, czyli przekłada problem na kod programu, liczy chyba nawet na intigerach podwójnej precyzji, ale w końcu zaczyna zaokrąglać i wtedy wychodzą bzdury. To oznacza, że chłopcy z OpenAI wzięli sobie w końcu do serca moje kilka rozmów z ChatGPT o tym problemie, faktoryzacjach i takich tam ;)
Jak już mówiłem, ChatGPT stale się zmienia, czyli nie jest prawdą co niektórzy sugerują, że on się już nie uczy, czyli ma wszystko w neuronach po etapie deep learningu i koniec. |
|
|
Dark Regis To również nie jest prawdą, chociaż rzeczywiście istnieją okresy dla każdej z cyfr liczonej od końca. Tutaj jest łatwiej policzyć te okresy niż w przypadku 2, bo 2 dzieli 10, i to przesuwa każdy okres o jedno zero w dół, co jest zjawiskiem podobnym do rozwinięć w zwykłych ułamkach np. 7/15=0.1(3) (vide niżej). W przypadku tych okresów, jest to dużo dużo bardziej subtelne twierdzenie niż twierdzenie Eulera. Nie wiem jeszcze czy ktoś je sformułował. ;)
Tak więc błędy obliczeń są u ChataGPT wszędzie: 3^20 % 1000 = 401 zgoda, ale 3^40 % 1000 = 801 i 3^80 % 1000 = 601. Okres dla pierwszej cyfry w potęgach 3 jest długości 4 i jest równy (1,3,9,7), okres drugiej cyfry jest długości 5*4=20 i jest (00028428684442602686), trzecia od końca ma okres długości 5^20=100 i jest to (000002715601439971444...3986). Teraz wystarczy tylko podzielić wykładnik przez długości okresów i dopasować końcówkę.
W przypadku potęg dwójki ostatnia cyfra ma okres 4 (2,4,8,6). Druga cyfra ma okres 5*4=20 i zaczyna się w 0+1 ((0),0,0,1,3,6,2,5,1,2,4,9,9,8,6,3,7,4,8,7,5). Trzecia cyfra ma okres 5*20=100 i zaczyna się w 0+2 ((0,0),0,0,0,0,1,2,5,0,0,0,1,3,7,5,0,1,2,5,1,3,6,2,4,8,7,4,9,...,1,3,6,3,6,3,7,5). Nawias okrągły w środku w okresie wskazuje co należy usunąć ze stanu faktycznego, żeby długości się zgadzały. Czwarta ma okres długości 5*100=500 i zaczyna się w 0+3... Ale piąta jest przesunięta jeszcze inaczej +kolejne zero (ciekawe dlaczego, czy aby nie dlatego, że te przesunięcia też mają okresy? ;).
Gdybyśmy liczyli w systemie szesnastkowym, to byłoby jeszcze inaczej. Dla potęg 3:
Okres 1: (139B) długość 4.
Okres 2: (00015FD8AEAFFD764C4D9B14EAEB39B28889D750262775FEC4C5139C6263B13A) długość 16*4=64
Okres 3: (000000289C63B3B2...) policzenie długości i końcówki okresu pozostawiam jako zadanie domowe ;) |
|
|
Dark Regis "Rozwiązuje" to stanowczo za dużo powiedziane ;)
Raczej udaje, że rozwiązuje, czyli zwyczajnie wprowadza w błąd. Albowiem....
2^1000=1071508607186267320948425049060001...67660429831652624386837205668069376,
czyli ostatnie 3 cyfry są równe 376, a nie jak sugeruje nasz geniusz matematyki 125 ;)))))
"...because 1000 is divisible by 3" 8] |
|
|
Grzegorz GPS Świderski To są złe obliczenia, ale poprawne rozumowanie. Co oznacza, że połączenie jej z Wolframem pozwoli dokładnie rozwiązywać takie zadania. W istocie pomyliła się tylko o wyznaczenie cyklu, bo on nie jest co 20, ale co 100. Niemniej jej rozumowanie pozwala znaleźć trzy ostatnie cyfry dowolnej liczby postaci 3^x dla naturalnego x — wystarczy wyliczyć je dla pierwszych stu kolejnych potęg 3, a potem tylko znaleźć resztę z dzielenia x przez 100. Ale jeśli zamienimy 3 na zmienną, to już problem zaczyna być trudny, zahaczający o problemy otwarte. Ich jeszcze GPT-4 nie rozwiązuje. Ale GPT-5 w połączeniu z Wolframem już je wkrótce rozwiąże. |
|
|
Grzegorz GPS Świderski Można z nią gadać po polsku. Drugie zadanie rozwiązała tak:
Obliczenie dokładnej wartości 3^10000000000000000000 jest niemożliwe dla zwykłych komputerów, ale mogę pomóc znaleźć trzy ostatnie cyfry tej liczby, wykorzystując cykliczność potęg liczby 3 w systemie dziesiętnym.
W systemie dziesiętnym, trzy ostatnie cyfry liczby są pozostałością po dzieleniu przez 1000. Możemy więc skupić się na obliczeniu 3^10000000000000000000 modulo 1000. Ponieważ liczby całkowite modulo dowolnej liczby mają właściwości cykliczne, wystarczy znaleźć cykl modulo 1000 dla potęg liczby 3.
Zbadajmy pierwsze kilka potęg liczby 3 modulo 1000:
3^1 % 1000 = 3
3^2 % 1000 = 9
3^3 % 1000 = 27
3^4 % 1000 = 81
3^5 % 1000 = 243
3^6 % 1000 = 729
3^7 % 1000 = 187
3^8 % 1000 = 561
3^9 % 1000 = 683
3^10 % 1000 = 049
3^11 % 1000 = 147
3^12 % 1000 = 441
3^13 % 1000 = 323
3^14 % 1000 = 969
3^15 % 1000 = 907
3^16 % 1000 = 721
3^17 % 1000 = 163
3^18 % 1000 = 489
3^19 % 1000 = 467
3^20 % 1000 = 401
...
Zauważamy, że cykl się powtarza co 20 potęg, czyli:
3^20 % 1000 = 401
3^40 % 1000 = 401
3^60 % 1000 = 401
...
Teraz wystarczy obliczyć resztę z dzielenia 10000000000000000000 przez 20:
10000000000000000000 % 20 = 0
Ponieważ reszta wynosi 0, oznacza to, że 3^10000000000000000000 jest podzielne przez 20. W takim przypadku musimy obliczyć wartość dla potęgi o jeden mniejszej:
3^9999999999999999999 % 1000 = 3^19 % 1000 = 467
Trzy ostatnie cyfry liczby 3^10000000000000000000 to 467.
|
|
|
Grzegorz GPS Świderski Tak GPT-4 rozwiązuje to zadanie:
To find the last 3 digits of 2^1000, we can use modular arithmetic. We want to find the remainder when 2^1000 is divided by 1000. We can break 1000 down into its prime factors: 1000 = 2^3 * 5^3. By the Chinese Remainder Theorem, we can find the remainders when 2^1000 is divided by 8 and 125 and then combine them to get the remainder when 2^1000 is divided by 1000.
First, we find the remainder of 2^1000 divided by 8:
2^1000 ≡ 0 (mod 8), because 1000 is divisible by 3.
Next, we find the remainder of 2^1000 divided by 125:
Using Euler's Totient Theorem, we know that a^φ(n) ≡ 1 (mod n) if a and n are coprime. Here, a = 2 and n = 125, which are coprime. The totient (φ) of 125 is φ(5^3) = 5^2(5 - 1) = 100.
So, 2^100 ≡ 1 (mod 125). We can rewrite 2^1000 as (2^100)^10. Therefore,
2^1000 ≡ (1)^10 ≡ 1 (mod 125).
Now we have:
2^1000 ≡ 0 (mod 8)
2^1000 ≡ 1 (mod 125)
To combine these, we use the Chinese Remainder Theorem. We find integers x and y such that:
x ≡ 1 (mod 8)
x ≡ 0 (mod 125)
y ≡ 0 (mod 8)
y ≡ 1 (mod 125)
We can see that x = 125 and y = 8 satisfy these conditions. The general solution is given by:
2^1000 ≡ 125a + 8b (mod 1000)
We know that 2^1000 ≡ 0 (mod 8) and 2^1000 ≡ 1 (mod 125). Therefore:
2^1000 ≡ 125 * 1 + 8 * 0 (mod 1000)
2^1000 ≡ 125 (mod 1000)
So, the last three digits of 2^1000 are 125. |