Chinese theorem



Hi Konstantinos,

2009/11/29 ???????????? ?????? <kotzeve at hotmail.com>:
>
> Hello,again...Does anyone know if there is a function in maxima tha solves
> the chinese remainder theorem?

I'm not aware of such a function in the Maxima reference manual for
version 5.19.2. However, the following Maxima function implements the
Chinese remainder theorem:

{{{
crt(A, M) := block(
    Mprod : product(M[i], i, 1, length(M)),
    Mdiv : map(lambda([x], Mprod / x), M),
    X : map(inv_mod, Mdiv, M),
    x : sum(A[i]*X[i]*Mdiv[i], i, 1, length(M)),
    return(mod(x, Mprod))
)$
}}}

The list A contains integers you want to solve for, and M is a list of
moduli. Here are some examples on using the function crt():

{{{
%i1) load("crt.mac");
(%o1)                               crt.mac
(%i2) A : [2, 3, 1]$
(%i3) M : [3, 4, 5]$
(%i4) x : crt(A, M);
(%o4)                                 11
(%i5) mod(x, 3);
(%o5)                                  2
(%i6) mod(x, 4);
(%o6)                                  3
(%i7) mod(x, 5);
(%o7)                                  1
(%i8) A : [4, 7, 3]$
(%i9) M : [5, 8, 9]$
(%i10) x : crt(A, M);
(%o10)                                39
(%i11) mod(x, 5);
(%o11)                                 4
(%i12) mod(x, 8);
(%o12)                                 7
(%i13) mod(x, 9);
(%o13)                                 3

-- 
Regards
Minh Van Nguyen