Page 31 - 4395
P. 31

ДОДАТОК А

                                БІНАРНІ АЛГОРИТМИ ПІДНЕСЕННЯ ЧИСЛА
                                           ДО   ВЕЛИКОГО СТЕПЕНЯ


                        Бінарний  метод  ґрунтується  на  двійковому  зображенні
                 показника степеня. Є два варіанти цього методу залежно від того, як

                 переглядають  біти  показника  степеня.  Перший  –  бінарний  метод
                 зліва направо, а другий – бінарний метод справа наліво. Зрозуміло,
                 що  перший  метод  переглядає  біти  зліва  направо,  тоді  як  другий  –
                 справа наліво.

                        Бінарний  метод  зліва  направо.  Нехай  (п ...п )   –  бінарне
                                                                                      k–1
                                                                                             о 2
                 зображення числа п. Тоді бінарний метод зліва направо ґрунтується
                 на розкладі

                                                                                                      2
                                                                             2
                                                                 2
                                x (n k 1 ...n 0  ) 2    ((...(((x n k 1  ) x  n k 2  ) x  n k 3  ) 2 ...) x  n 1  ) x  n 0 .

                        Алгоритм такий:

                        LR_bin_exp(х,n,m)
                        Вхід: x,n,m;
                                      n
                        Вихід: y=x  mod m;
                        begin
                          зобразити n так: n = (n ...n ) ;
                                                                0 2
                                                         k-1
                          y:=l;
                          for i:=k-l downto 0 do
                          begin
                          y:=y·y mod m;

                           if n =1 then
                               i
                          y:=y·x mod m;
                          end

                        end.

                        Бінарний метод справа наліво ґрунтується на розкладі


                                       x (n k   1 ...n 0  ) 2    (x  2 0  ) n 0 ...(x 2 k  1  ) n k  1  ,
                 що дає такий алгоритм:


                        RL_bin_exp(х, n, m)
                        Вхід: x,n,m;
                                      n
                        Вихід: у=х  mod m;

                                                              31
   26   27   28   29   30   31   32   33   34   35   36