 
 
 
7.1.20  Chinese remainders
Theorem 1 (Chinese remainders)  
If p1,
p2,…,
pn are relatively prime,
then for any integers a1,
a2,…,
an
there is a number c such that
c≡ 
a1(mod 
p1 )
, c≡ 
a2 (mod 
p2 ), …, 
c≡ 
an (mod 
pn )
.
 
The ichinrem
or ichrem command
finds this value of c.
- 
ichinrem takes one or more arguments:
Each argument is a pair of integers ak and pk either as a list
[ak,pk] or as a modular integer ak% pk.
- ichinrem([a1,p1],[a2,p2],…,[an,pn])
if possible returns a list [c,L], where L=
lcm(p1,p2,…,pn) and c satisfies c≡ ak (mod pk ) for
k=1,…,n.
Note that any multiple of L=lcm(p1,p2,…,pn) can be
added to c and the equalities will still be true. If the pk
are relatively prime, then a solution c exists by Theorem 1;
what’s more, any two solutions will be congruent
modulo the product of the pks.
If all of the arguments are given as modular integers, then the result
will also be given as a modular integer c % l.
The chrem command does the same
thing as ichinrem, but the input is given in a different form.
- 
chrem takes two arguments:
[a1,…,an] and [p1,…,pn],
lists of integers of the same size.
- chrem([a1,…,an],[p1,…,pn])
returns [c,L], as for ichinrem.
Be careful with
the order of the parameters. Indeed,
chrem([a,b],[p,q]), ichrem([a,p],[b,q])
and ichinrem([a,p],[b,q]) all produce the same output.
Examples
Solve:
|  | | x | ≡ 3(mod 5 ) |  |  |  |  |  |  |  |  |  |  | x | ≡ 9(mod 13 ) |  |  |  |  |  |  |  |  |  | 
 | 
or:
so x≡ 48 (mod 65 ).
You can also input:
Note that 48≡ −17 (mod 65 ).
Recalling that chrem takes its arguments in a different form,
you can also enter:
Solve:
|  | | x | ≡ 3(mod 5 ) |  |  |  |  |  |  |  |  |  |  | x | ≡ 4(mod 7 ) |  |  |  |  |  |  |  |  |  |  | x | ≡ 1(mod 9 ) |  |  |  |  |  |  |  |  |  | 
 | 
| ichinrem([3,5],[4,7],[1,9]) | 
hence x≡ 298 (mod 315 ).
Alternative input:
Note that 298≡ −17 (mod 315 ).
Again, with the arguments in a different form, you can also enter:
Remark.
These three commands, ichinrem,
ichrem and chrem, may also be used to find the
coefficients of a polynomial whose equivalence classes are known
modulo several integers by using polynomials with integer coefficients
instead of integers for the ak.
For example, to find ax+b modulo 315=5 · 7 · 9 under the
assumptions
|  | | a | ≡ 3(mod 5 ) |  |  |  |  |  |  |  |  |  |  | a | ≡ 4(mod 7 ) |  |  |  |  |  |  |  |  |  |  | a | ≡ 1(mod 9 ) |  |  |  |  |  |  |  |  |  | 
 | 
and
|  | | b | ≡ 1(mod 5 ) |  |  |  |  |  |  |  |  |  |  | b | ≡ 2(mod 7 ) |  |  |  |  |  |  |  |  |  |  | b | ≡ 3(mod 9 ) |  |  |  |  |  |  |  |  |  | 
 | 
Example
| ichinrem((3x+1)%5,(4x+2)%7,(x+3)%9) | 
|  | | |  | ⎛ ⎝
 | ⎛ ⎝
 | −17 | ⎞ ⎠
 | %315 | ⎞ ⎠
 | x+156%315 | 
 |  |  |  |  |  |  |  |  |  |  | 
 | 
hence a=-17 (mod 315) and b=156 (mod 315).
As before, chrem takes the same input in a different format.
| chrem([3x+1,4x+2,x+3],[5,7,9]) | 
Note that 298≡ −17 (mod 315 ).
 
 
