36 lines
733 B
Text
36 lines
733 B
Text
func ModPow(Base, Exp, Mod);
|
|
int Base, Exp, Mod, Result;
|
|
[if Mod = 1 then return 0;
|
|
Result:= 1;
|
|
Base:= rem(Base/Mod);
|
|
while Exp > 0 do
|
|
[if (Exp&1) = 1 then Result:= rem((Result*Base)/Mod);
|
|
Base:= rem((Base*Base) / Mod);
|
|
Exp:= Exp >> 1;
|
|
];
|
|
return Result;
|
|
];
|
|
|
|
func IsCurzon(N, K);
|
|
int N, K, R;
|
|
[R:= K * N;
|
|
return ModPow(K, N, R+1) = R;
|
|
];
|
|
|
|
int K, N, Count;
|
|
[K:= 2;
|
|
Format(5, 0);
|
|
while K <= 10 do
|
|
[Text(0, "Curzon numbers with base "); IntOut(0, K); CrLf(0);
|
|
N:= 1; Count:= 0;
|
|
while Count < 50 do
|
|
[if IsCurzon(N, K) then
|
|
[RlOut(0, float(N));
|
|
Count:= Count+1;
|
|
if rem(Count/10) = 0 then CrLf(0);
|
|
];
|
|
N:= N+1;
|
|
];
|
|
K:= K+2;
|
|
];
|
|
]
|