algorytm.org

Implementacja w Ada

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Szybkie potęgowanie modularne - Implementacja w Ada
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 13 listopada 2006 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

SPM.adb:
--
-- Szybkie Potegowanie modulo
--
-- www.algorytm.org
-- (c)2006 Tomasz Lubinski
--

with Text_IO;
use Text_IO;

with Interfaces;
use Interfaces;

procedure SPM is
	
   function power_modulo_fast(a: Integer; b: Unsigned_32; m: Integer) return Integer is
      i: Unsigned_32;
      result: Integer := 1;
	 x: Integer := a mod m;
   begin
      i := 1;
      while i<=b loop
         x := x mod m;
         if (b and i) /= 0 then
            result := result * x;
            result := result mod m;
         end if;
         x := x*x;
         i := i * 2;
      end loop;
      return (result);
   end;

begin

   -- 9688563^45896 mod 71 = 30
   Put_Line("9688563^458926 mod 71 = " & Integer'Image(power_modulo_fast(9688563, 458926, 71)));

   -- 12^53 mod 7 = 3
   Put_Line("12^53 mod 7 = " & Integer'Image(power_modulo_fast(12, 53, 7)));

end;
Dodaj komentarz