31 lines
970 B
Text
31 lines
970 B
Text
$ENTRY Go {
|
|
, '2988348162058574136915891421498819466320163312926952423791023078876139': e.A
|
|
, '2351399303373464486466122544523690094744975233415544072992656881240319': e.B
|
|
= <Prout <Symb <ModPow
|
|
(<Numb e.A>) (<Numb e.B>) (<Pow (10) (40)>)>>>;
|
|
};
|
|
|
|
ModPow {
|
|
(e.B) (e.P) (e.M) = <ModPow (e.B) (e.P) (e.M) (1)>;
|
|
(e.B) (0) (e.M) (e.R) = e.R;
|
|
(e.B) (e.P) (e.M) (e.R),
|
|
<Divmod (e.P) 2>: (e.P2) s.S,
|
|
<Mod (<Mul (e.B) e.B>) e.M>: e.B2,
|
|
s.S: {
|
|
0 = <ModPow (e.B2) (e.P2) (e.M) (e.R)>;
|
|
1, <Mod (<Mul (e.R) e.B>) e.M>: e.R2 =
|
|
<ModPow (e.B2) (e.P2) (e.M) (e.R2)>;
|
|
};
|
|
};
|
|
|
|
Pow {
|
|
(e.B) (e.P) = <Pow (e.B) (e.P) (1)>;
|
|
(e.B) (0) (e.R) = e.R;
|
|
(e.B) (e.P) (e.R),
|
|
<Mul (e.B) e.B>: e.B2,
|
|
<Divmod (e.P) 2>: (e.P2) s.S,
|
|
s.S: {
|
|
0 = <Pow (e.B2) (e.P2) (e.R)>;
|
|
1 = <Pow (e.B2) (e.P2) (<Mul (e.B) e.R>)>;
|
|
};
|
|
};
|