Arytmetyka w szczególności dzielenie wielkich liczb

0

Witam!

Swojego czasu bo napisaniu arytmetyki wielkich liczb zauważyłem, że o ile mnożenie, dodawania i chyba odejmowania działa znacznie szybciej niż wbudowana obsługa dużych liczb w pythonie, to dzielenie i modulo działa już kilkadziesiąt razy wolniej.

W odróżnieniu do mnożenia, dodawania i odejmowania dzielenie pisemne wymaga... dzielenia. Stąd mój problem. Pomyślałem, żeby to zrobić w ten sposób, że gdy chcę podzielić A przez B to przesuwam B tak jak w pisemnym, biorę pierwsze cyfry a i b z obu liczb (system o podstawie 10^18) i robię w pseudokodzie coś takiego:

while(A > B){
   act = a / (b + 1);
   if(act == 0)act = 1;
   cyfra_wyniku += act;
   A -= B * act;
}

Dalej robię tak, jak w pisemnym. Coś takiego powinno dobrze działać? Jest szybszy sposób? Działając w systemie binarnym sprawa jest banalna, ale nie wiem jak to zrobić mając tak duże cyfry (1018, czy 264)

0

Ciekawie wygląda dzielenie Fouriera, jednak tu też trzeba dzielić duże liczby, żeby móc podzielić duże liczby. Jedyną zaletą jest to, że dzielimy tą dużą liczbę już przez jedną cyfrę (te dwie cyfry, na które wikipedia każe dzielić to nic innego [chyba] jak system o podstawie 100).

1 użytkowników online, w tym zalogowanych: 0, gości: 1