RosettaCodeData/Task/Modular-exponentiation/Pascal/modular-exponentiation.pas

27 lines
543 B
ObjectPascal

Program ModularExponentiation(output);
uses
gmp;
var
a, b, m, r: mpz_t;
fmt: pchar;
begin
mpz_init_set_str(a, '2988348162058574136915891421498819466320163312926952423791023078876139', 10);
mpz_init_set_str(b, '2351399303373464486466122544523690094744975233415544072992656881240319', 10);
mpz_init(m);
mpz_ui_pow_ui(m, 10, 40);
mpz_init(r);
mpz_powm(r, a, b, m);
fmt := '%Zd' + chr(13) + chr(10);
mp_printf(fmt, @r); (* ...16808958343740453059 *)
mpz_clear(a);
mpz_clear(b);
mpz_clear(m);
mpz_clear(r);
end.