Strona 1 z 1

2 do potęgi x

: 29 lis 2024, o 23:42
autor: Kera
Jak szybko obliczyć \(\displaystyle{ 2 ^{x}}\) z dowolnej liczby N.
np:
\(\displaystyle{ 1024 = 2^{10} }\)
proste, dla:
\(\displaystyle{ 90854840536950861318665475986000566794205170085914757535186274897579911014174740415773881339220445695095315200783272241691825203576832 = 2 ^{445} }\)
a co z coraz większymi liczbami.
Załóżmy że mamy liczę N mającą w zapisie dziesiętnym miliardy cyfr, dzielenie jej przez 2 trwałoby zbyt długo. Czy jest jakiś szybki sposób?

Re: 2 do potęgi x

: 30 lis 2024, o 06:30
autor: a4karo
Co to znaczy "obliczyć"? Wypisać wszystkie cyfry po kolei? Podejrzewam, że nie ma na świecie tyle przestrzeni dyskowej, żeby to zrobić.

Re: 2 do potęgi x

: 1 gru 2024, o 09:49
autor: Kera
"obliczyć" czyli obliczyć \(\displaystyle{ 2 ^{x} }\) jakąś szybką metodą o ile taka istnieje. Pytanie dotyczy, czy jest jakiś sposób?

Dodano po 2 minutach 50 sekundach:
podać wartość x

Re: 2 do potęgi x

: 2 gru 2024, o 07:25
autor: Brombal
Chodzi ci o algorytm szybkiego potęgowania?
Bo jeżeli chodzi o zapis w systemie dwójkowym to podana liczba to
\(\displaystyle{ 1000.....0_{2} }\) z \(\displaystyle{ 445}\)-cioma zerami. dzielenie przez \(\displaystyle{ 2}\) to zwykłe ucięcie jednego zera.

Dodano po 2 minutach 15 sekundach:
Operacja na liczbach z miliardem cyfr dziesiętnych robiłem. Zwykłe dzielenie trwało godziny.

Re: 2 do potęgi x

: 3 gru 2024, o 01:15
autor: Kera
podam przykład:
\(\displaystyle{ 2 ^{777176}}\) mod 398563072 = \(\displaystyle{ 2 ^{8} }\) , więc \(\displaystyle{ x=8}\).
Jak obliczyć x gdy potęga i dzielnik modulo, ma miliard cyfr w zapisie \(\displaystyle{ _{10}}\)

Re: 2 do potęgi x

: 3 gru 2024, o 06:24
autor: Brombal
\(\displaystyle{ 398563072_{10}=1100000111110011010010000000_{2}}\)
Jak widać ostatnia jedynka na ósmej pozycji.

Dodano po 3 godzinach 38 minutach 18 sekundach:
\(\displaystyle{ \frac{777176}{8} =97 147}\)

Dodano po 3 minutach 16 sekundach:
\(\displaystyle{ \frac{398563072}{2^8} =1 556 887}\)

Re: 2 do potęgi x

: 4 gru 2024, o 23:59
autor: Kera
A co powiesz Brombal na taki przykład:
\(\displaystyle{ 2 ^{795343}}\) mod \(\displaystyle{ 1631448064 = 2 ^{31} }\) czyli \(\displaystyle{ x=31}\)
wtedy:
\(\displaystyle{ 1631448064 _{10} }\) \(\displaystyle{ = }\) \(\displaystyle{ 0110 0001 0011 1101 1110 1100 0000 0000 _{2}}\)
tutaj x= \(\displaystyle{ 10 \neq 31}\)

Dodano po 8 godzinach 4 minutach 23 sekundach:
błąd, zamiast mod \(\displaystyle{ 1631448064}\) powinno być mod \(\displaystyle{ 3262896128}\) ,wtedy \(\displaystyle{ x=11 \neq 31}\)

Re: 2 do potęgi x

: 5 gru 2024, o 13:54
autor: Brombal
Z moich obliczeń wynika
\(\displaystyle{ 795343}\) taka reszta

Re: 2 do potęgi x

: 5 gru 2024, o 16:39
autor: Kera
podniosłeś faktycznie \(\displaystyle{ 2 ^{795343} }\) mod \(\displaystyle{ 3262896128}\) i obliczyłeś resztę? Jeżeli tak to moje założenie jest fałszywe :cry:

Re: 2 do potęgi x

: 5 gru 2024, o 17:32
autor: Brombal
Sprawdzę jeszcze raz

Dodano po 4 godzinach 39 minutach 4 sekundach:
Sprawdziłem Twoje wyniki są prawidłowe.
Przeliczyłem bezpośrednio.
Pierwsza liczba ma \(\displaystyle{ 233954}\) cyfr i mod \(\displaystyle{ 256}\)
Druga liczba ma \(\displaystyle{ 239423}\) cyfr i mod \(\displaystyle{ 2147483648}\)
Pomyliłem się na szczęście.

Dodano po 12 godzinach 36 minutach 59 sekundach:
Kera pisze: 5 gru 2024, o 16:39 podniosłeś faktycznie \(\displaystyle{ 2 ^{795343} }\) mod \(\displaystyle{ 3262896128}\) i obliczyłeś resztę? Jeżeli tak to moje założenie jest fałszywe :cry:
Sprawdziłem bezpośrednio powyższe dane dla omyłkowego \(\displaystyle{ 326289612}\)
wynik to
\(\displaystyle{ 255023744}\) czyli \(\displaystyle{ 2^{7} \cdot 1992373 }\)
Poprawny wynik to \(\displaystyle{ 2147483648}\) czyli \(\displaystyle{ 2^{31}}\)