15 grudnia 2017

Dzielenie wykorzystujace dzielenie przez potęgę podstawy

Z poczatku myślałem, że znalazłem kolejny sposób na rozkład. Ale nie. Tym razem połączenie badanych własności spowodowało tylko znalezienie sposobu dzielenia, korzystającego z innego, prostszego.

Problem jest następujący. Chcemy podzielić przez jakąś dużą liczbę, ale w pobliżu, istnieje nieco większa liczba, przez którą dzielenie jest znacznie łatwiejsze. Zatem dzielimy przez tę większą liczbę, zaś wynik korygujemy.
Sposób ten występuje w matematyce zwanej 'Mental math', tam tylko dla wartości bliskich pełnych dziesiątek. Tu stosowany jest dla dużych wartości. Łatwo przechodzi w konwersję.

Przykład, chcemy podzielić
348 895 155 : 947
Dzielenie przez 947 jest raczej skomplikowane, łatwiej jest podzielić przez 950, albo nawet przez 1000.
Zatem zróbmy to, podzielimy przez 1000 uzyskując 348 895 *1000 + 155. Aby uzyskać prawidłowy iloraz oraz resztę, należy uwzględnić poprawkę 1000 = 947+53, czyli standardowo
348 895 * (947 + 53) + 155 = 348 895 * 947 + (348 895*53+155)
Reszta jest duża, dokładamy rekursję i zastępujemy mnożenie prostszym, np. przez 50.
Zatem mamy z 348 895 155 : 950, pojawia się różnica 1000-950 = 50
348 895 155  -> 348 895 *50 +155     iloraz 348 895
17 444 905  -> 17 444 *50 + 905        17 444
873 105  -> 873 *50 + 105                  873
43 755  -> 43 *50 + 755                      43
2 905  -> 2 *50 + 905 = 950+55         2+1
Suma 348 895 + 17 444 + 873 + 43 + 2 + 1 = 367258 jest ilorazem z dzielenia przez 950, 55 jest resztą. Zadziwiająca prostota uzyskania ilorazu. Co dla innych wartości?
Mamy
348 895 155 = 367 258 * 950 + 55
Ale chcemy znaleźć iloraz przez 947, a nie przez 950=947+3.
Zatem jest to 367 258*3 + 55
Liczba mniejsza, ale dalej duża. Możemy jednak kontynuować dzielenie przez 950 ilorazu przekształcając do postaci Hörnera, czyli liczba
348 895 155 = (386*950+558)*950+55
Teraz ręcznie zamieniamy 950 na 950-947=3, uzyskując dużo mniejszą wartość
(386*3+558)*3+55 = 5203
Można zastosować rekursję dla dzielenia przez 947, albo wprost podzielić uzyskując iloraz 4 i resztę 468.

Sposób ten nadaje się, gdy chcemy znajdować wartości kilku dużych ilorazów blisko siebie, w schemacie Hörnera mamy stałe współczynniki, zaś reszty uzyskujemy z wartości tegoż wielomianu przez różnice znanego dzielnika oraz szukanego.
Np. dzielenie przez 937=950-13: (386*13+558)*13+55
przez 931=950-19: (386*19+558)*19+55

Używałem tego przy systemie Fibonacciego. Zastanawiający jest sposób znajdowania ilorazu jako sumy początkowych cyfr uzyskiwanych liczb przy dzieleniu przez potęgę podstawy. Dla innych wartości ta prostota zanika.