Wskazówka:

Analizujemy przedstawiony algorytm. W pierwszym etapie szukamy największej liczby k, takiej że k! ≤ x. Zauważmy, że pętla kończy się, gdy k! ≥ x. Jeżeli k! = x, to znaleźliśmy odpowiednie k. Jeżeli k! > x, to musimy zmienić wartość zmiennej silnia (zmniejszamy wartość silnia k razy) oraz k (zmniejszamy k o 1). Stąd wynika, że pierwszą lukę w algorytmie wypełniamy zapisem: jeżeli silnia>x.

W drugiej części algorytmu obliczamy kolejne cyfry zapisu silniowego. Aby uzyskać kolejną cyfrę, musimy obliczyć wynik dzielenia całkowitego liczby x przez k!, co odpowiada instrukcji cyfra ← x div silnia. Po aktualizacji tworzonego zapisu silniowego (instrukcja s ← s ◦ tekst (cyfra)) aktualizujemy wartość x, co odpowiada instrukcji x ← x mod silnia lub x ← x — cyfra *silnia. Ostatnim etapem jest przygotowanie nowej wartości silni odpowiadającej kolejnej cyfrze w zapisie silniowym. Będzie to silnia ← silnia div k.

Powrót do pytań