已知同余方程ax≡b(mod n){即ax mod n=b mod n;a、b、n为常数,求解x}
var a,b,e,i,n,d,x,y,x0:longint;
function e_gcd(a,b:longint;var x,y:longint):longint;
var t:longint;
begin
if b=0 then
begin e_gcd:=a;x:=1;y:=0;end
else
begin
e_gcd:=e_gcd(b,a mod b,x,y);
t:=x;x:=y;y:=t-(a div b)*y
end
end;
begin
readln(a,b,n); {ax≡b(mod n)}
d:=e_gcd(a,n,x,y); {ax+ny=d}
if b mod d<>0 then writeln('no answer')
else
begin
e:=x*(b div d) mod n;
while e<0 do e:=e+n;
writeln(e);
for i:=1 to d-1 do writeln((e+i*(n div d)) mod n);
end;
end.
若 b mod d<>0 则 同余方程无解,否则同余方程有的个解:
x0:=e
(e:=x*(b div d) mod n;
while e<0 do e:=e+n;)
xi:=(e+i*(n div d)) mod n); {1<=i<=d}