Matematyka dyskretna (2)
wskazówki do zada« 112 z listy II, 23.III.21
Dla uproszczenia piszemy a =n b zamiast a = b (mod n).
Reguªy podzielno±ci liczb
Liczba n dzieli si¦ przez 3 wtedy i tylko wtedy gdy suma jej cyfr (dziesi¦tnych!) jest podzielna przez 3.
Posta¢ dziesi¦tna liczby n: CnCn−1. . . C1C0 czyli
n = C0 + C1 · 10 + · · · + Cn−1 · 10n−1+ Cn · 10n.
Poniewa» 10 =3 1, wi¦c tak»e 10k =3 1k = 1. Zatem Ck =3 Ck · 1 =3 Ck · 10k dla wszystkich k = 0, 1, ...n. Sumuj¡c te równo±ci stronami otrzymamy
C0 + C1 +· · · Cn−1 + Cn =3 n .
Suma cyfr liczby n daje identyczn¡ reszt¦ z dzielenia przez 3 jak sama liczba n.
Prosty wniosek: je±li wzi¡¢ siódemkowy zapis liczby n = S0 + S1 · 7 + · · · Sn · 7n, kryterium podzielno±ci przez 3 jest dokªadnie takie samo jak w przypadku liczb dziesi¦tnych dlaczego?
Inny przykªad: maj¡c posta¢ siódemkow¡ liczby n, jak sprawdzi¢ czy dzieli si¦ ona przez 5? Wypiszmy jak zachowuj¡ si¦ kolejne pot¦gi 7 w dzieleniu przez 5:
7 =5 2, 72 =5 22 = 4, 73 =5 23 =5 3, 74 =5 24 =5 1, 75 =5 25 =5 2·24 =5 2, itd.
Wida¢ st¡d, »e
Ck · 7k =5
Ck k = 0, 4, 8, . . . 2Ck k = 1, 5, 9, . . . 4Ck k = 2, 6, 10, . . . 3Ck k = 3, 7, 11, . . .
A wi¦c np. liczba siódemkowa 6041533 jest podzielna przez 5 bo liczba 1· 3 + 2 · 3 + 4 · 5 + 3 · 1 + 1 · 4 + 2 · 0 + 4 · 6 = 60 jest tak»e podzielna przez 5.
Wªasno±ci funkcji Eulera
(i) ϕ(p) = p − 1 ϕ(7) = 6, ϕ(29) = 28, ...
(ii) ϕ(m · n) = ϕ(m) · ϕ(n) je±li NWP(m, n) = 1
ϕ(15) = ϕ(3)ϕ(5) = 2· 4 = 8, ... ale ϕ(24) ̸= ϕ(4)ϕ(6) (iii) ϕ(pk) = pk−1(p− 1)
ϕ(81) = ϕ(34) = 33(3− 1) = 54, ϕ(24) = ϕ(23 · 3) = 22(2− 1) · 2 = 8 (iv) ϕ(n) =
∏k i=1
pmi i−1(pi− 1) = n (
1− 1 p1
)
· · · (
1− 1 pk
)
, gdy n = pm1 1· · · pmkk
ϕ(1000) = ϕ(23 · 53) = ϕ(23)· ϕ(53) = 4· 1 · 25 · 4 = 400 ϕ(1000) = 1000
( 1− 1
2 ) (
1− 1 5
)
= 1000 · 1 2 · 4
5 = 400
Twierdzenie Eulera Je±li NWP(a, n) = 1, wówczas aϕ(n) = 1 (mod n).
Przykªady zastosowa«
Policzy¢ 6102 mod 25.
Poniewa» ϕ(25) = 20, wi¦c 620 =25 1, a zatem tak»e 6100 = (620)5 =25 1. St¡d 6102 = 62 · 6100 =25 36· 1 =25 11.
Uwaga na sytuacje gdy NWP(a, n) ̸= 1, bo równo±¢ w twierdzeniu Eulera mo»e nie zachodzi¢! Np. ϕ(12) = 4 ale 3ϕ(12) = 34 =12 9 ̸= 1.
Wyznaczy¢ rozwi¡zania 7x21 − 6x10+ 5x = 4 (mod 11)
Szukamy wszystkich x ∈ {0, 1, ...10} speªniaj¡cych t¡ równo±¢. Dla ka»dgo z tych x na pewno NWP(x, 11) = 1. Poniewa» ϕ(11) = 10, wnioskujemy »e x10 =11 1, czyli
7x− 6 · 1 + 5x =11 4 ⇔ 12x =11 4 + 6 ⇔ x =11 10 .
Przykªad, gdy nie mo»na polega¢ na tw. Eulera: 1033+ 1244(mod 15).
ϕ(15) = 8, 108 =15 10 ̸= 1 i 128 =15 6 ̸= 1.
102 =15 10 ⇒ 10n =15 10 , 122 =15 9, 92 =15 6, 62 =15 6 A wi¦c 124 =15 6 i 6n =15 6. St¡d
1033+ 1244 =15 10 + 611 =15 16 =15 1 .
Pot¦gowanie modularne
Istnieje na szcz¦±cie szybki algorytm pot¦gowania modularnego am(mod n), wy- magaj¡cy mniej wi¦cej log2m mno»e«.
Je±li zapiszemy m w postaci binarnej, m = b0+ 2b1+ 22b2+· · · + 2kbk, wida¢, »e obliczanie am wymaga tylko obliczenia tych pot¦g a2j(mod n), dla których bj ̸= 0.
Mo»na je policzy¢ przez systematyczne podnoszenie do kwadratu. Np.
549(mod 9) = 532+16+1. Obliczamy kolejno
52 = 25 = 7 (mod 9)
54 = 72 = 49 = 4 (mod 9) 58 = 42 = 16 = 7 (mod 9) 516 = 72 = 4 (mod 9)
532 = 42 = 7 (mod 9) i w ko«cu 549 = 532+16+1 = 7· 4 · 5 = 5 (mod 9).
Niech k = [log2m]. Obliczamy kolejno a2, a4 = a2 · a2, ... a2k = a2k−1 · a2k−1 i ostatecznie am jako iloczyn niektórych z nich za ka»dym razem modulo n.
int modpower(int a, int m, int n){
int x = 1, y = a%n;
while ( m > 0 ){
if ( m%2 ) x = (x*y)%n;
y = (y*y)%n;
m = m/2;
}return x;
}
Lemat. Kongruencja a = b (mod n) dla n = pm1 1pm2 2· · · pmkk równowa»na
jest ukªadowi
a = b (mod pm1 1) a = b (mod pm2 2)
... ...
a = b (mod pmkk)
Przykªad: 1033 + 1244(mod 15) zast¦pujemy ukªadem kongruencji x = 1033 + 1244(mod 3)
x = 1033 + 1244(mod 5) ⇒ x = 1 + 0 (mod 3) x = 0 + 1 (mod 5)
poniewa» 10 =3 1 i 12 =3 0 w pierwszej oraz 10 =5 0 i z tw. Eulera ϕ(5) = 4, a wi¦c 1244 =5 1 w drugiej. St¡d otrzymujemy x = 1 + 3j z pierwszej równo±ci.
Wstawiamy do drugiej: 1 + 3j = 1 (mod 5), czyli 3j = 0 (mod 5), a wi¦c j = 5k.
St¡d x = 1 + 15k, tak jak poprzednio.
Ukªady kongruencji
2x = 3 (mod 5) 4x = 1 (mod 7) 2x = 4 (mod 9)
Z (1) mamy x = 4 + 5k i wstawiamy to w miejsce x do (2)
4(4 + 5k) =7 1 ⇒ 16 + 20k =7 1 ⇒ 6k =7 6 ⇒ k = 1 + 7m . Zatem x = 4 + 5(1 + 7m) = 9 + 35m. St¡d dalej
2(9 + 35m) = 4 (mod 9) ⇒ 7m = 4 (mod 9) ⇒ m = 7 + 9l . Ostatecznie x = 9 + 35(7 + 9l) = 254 + 315l.
Chi«skie twierdzenie o resztach Je±li liczby m1, m2, ..., mk s¡ parami wzgl¦d- nie pierwsze, NWP(mi, mj) = 1 dla i ̸= j, wówczas ukªad
x = a1 (mod m1) x = a2 (mod m2)
... ...
x = ak (mod mk)
ma dokªadnie jedno rozwi¡zanie x modulo M = m1m2· · · mk. Rozwi¡»emy teraz ukªad
x = 2 (mod 3) x = 3 (mod 5) x = 2 (mod 7) Po kolei obliczamy
1. M = m1m2m3 = 3· 5 · 7 = 105
2. M1 = M/m1 = 35, M2 = M/m2 = 21, M3 = M/m3 = 15.
3. Musimy teraz wyznaczy¢ odwrotno±ci liczb Mi odpowiednio modulo mi: c1 = M1−1 =3 35−1 =3 2−1 =3 2, c2 = M2−1 =5 21−1 =5 1
c3 = M3−1 =7 15−1 =7 1 . 4. Rozwi¡zanie jest liczb¡ postaci
x = a1c1M1 + a2c2M2 + a3c3M3 (mod M) czyli
x =105 2· 2 · 35 + 3 · 1 · 21 + 2 · 1 · 15 =105 233 =105 23 . St¡d ogólne rozwi¡zanie jest postaci x = 23 + 105k.
Niektóre zastosowania Chi«skiego Twierdzenia o Resztach
Przykªadowe zadanie
20x = 35 (mod 75) mo»na rozwi¡za¢ dwoma sposobami.
1. Obliczamy NWP(75, 20) = 5 i upraszczamy kongruencj¦ (dziel¡c przez 5) do postaci
4x = 7 (mod 15) ⇒ 4 · 4x = 4 · 7 (mod 15) ⇒ x = 13 (mod 15) . Zatem fundamentalne rozwi¡zania pierwotnego równania to x = 13 + 15k
x = 13, 28, 43, 58, 73 .
2. Korzystamy z lematu: rozkªad 75 = 3 · 52. Zamieniamy kongruencj¦ na ukªad { 20x = 35 (mod 3)
20x = 35 (mod 52) ⇒
{ 2x = 2 (mod 3) 20x = 10 (mod 52) Pierwsze równanie ma rozwi¡zanie x = 1 (mod 3), drugie ma 5 rozwi¡za«
x = 3, 8, 13, 18, 23 (mod 25) . Do ka»dego z ukªadów
{ x = 1 (mod 3)
x = a (mod 52) a = 3, 8, 13, 18, 23 nale»y zastosowa¢ teraz Chi«skie Twierdzenie o Resztach. Mamy
M = 75, M1 = 25, M2 = 3, M1−1 =3 1, M2−1 =25 17 czyli
x = 1· 1 · 25 + a · 17 · 3 = 25 + 51a (mod 75) ,
co dla kolejnych warto±ci a daje (tak jak poprzednio) x = 28, 58, 13, 43, 73.
Rozwi¡»emy kongruencj¦
2x13 − 6x = 3 (mod 21) zast¦puj¡c j¡ ukªadem
{ 2x13 − 6x = 3 (mod 3)
2x13 − 6x = 3 (mod 7) ⇒
{ 2x13 = 0 (mod 3) 2x13 + x = 3 (mod 7)
Pierwsze równanie jest speªnione tylko dla x = 0. W drugim mo»na zastosowa¢
twierdzenie Eulera: ϕ(7) = 6, x6 = 1 (mod 7) je±li x ̸= 7k. Mamy wi¦c równo-
wa»nie {
x = 0 (mod 3)
2x + x = 3 (mod 7) ⇒
{ x = 0 (mod 3) x = 1 (mod 7) Mo»emy zastosowa¢ teraz Chi«skie Twierdzenie:
M = 21, M1 = 7, M2 = 3, M1−1 =3 1, M2−1 =7 5 . Zatem x = 0 · 7 · 1 + 1 · 3 · 5 =21 15.
Kolejne równanie x3 − 7x2 + 4 = 0 (mod 88).
Rozkªadamy 88 = 23 · 11 i tworzymy równowa»ny ukªad { x3 − 7x2 + 4 = 0 (mod 23)
x3 − 7x2 + 4 = 0 (mod 11) ⇒
{ x3 + x2 + 4 = 0 (mod 23)
x3 + 4x2 + 4 = 0 (mod 11) ⇒ { x2(x + 1) = 4 (mod 23)
x2(x + 4) = 7 (mod 11)
Przez sprawdzenie wszystkich mo»liwo±ci znajdujemy w pierwszym równaniu x = 2, 3, 6, a w drugim x = 4. Musimy wi¦c rozwi¡za¢ ukªady
{ x = a (mod 23)
x = 4 (mod 11) a = 2, 3, 6 . Jak poprzednio mamy
M = 88, M1 = 11, M2 = 8, M1−1 =8 3, M2−1 =11 7 , czyli x = a · 11 · 3 + 4 · 8 · 7 =88 33a + 48 =88 26, 59, 70.
Znajdowanie k ostatnich cyfr du»ych liczb
Znajd¹ 2 ostatnie cyfry liczby 31001. Mamy wi¦c znale¹¢ reszt¦ 31001(mod 100).
Poniewa» NWP(3, 100) = 1, mo»emy zastosowa¢ tw. Eulera:
ϕ(100) = ϕ(22)ϕ(52) = 2· 20 = 40 340 = 1 (mod 100) . St¡d 31001 = 3· (340)25 =100 3· 125 = 3, a wi¦c odpowied¹ to `03'.
Identycznie znajdziemy np. dwie ostatnie cyfry liczby 310000 w reprezentacji sió- demkowej. Szukamy 310000(mod 49). Jak poprzednio poniewa» 3 i 49 s¡ wzgl¦dnie pierwsze
ϕ(49) = 7· 6 = 42, a wi¦c 342 = 1 (mod 49) .
Dalej 310000 = 3238·42+4 = 34· 1 (mod 49), a wi¦c 2 ostatnie cyfry siódemkowe tej liczby to 81 (mod 49) = 32.
Znajdziemy teraz 2 ostatnie cyfry dziesi¦tne liczby 21000, czyli 21000(mod 100).
Tym razem nie mo»na zastosowa¢ bezpo±rednio tw. Eulera bo liczby 2 i 100 nie s¡
wzgl¦dnie pierwsze. Oznaczaj¡c x = 21000(mod 100), na podstawie lematu mamy { x = 21000 (mod 22)
x = 21000 (mod 52) ⇒
{ x = 0 (mod 22) x = 1 (mod 52)
poniewa» 21000 dzieli si¦ przez 4 oraz ϕ(52) = 20 i st¡d 21000 = (220)50 = 1. Z Chi«skiego Twierdzenia otrzymujemy
M = 100, M1 = 25, M2 = 4, M1−1 =4 1, M2−1 =25 19 i dalej x = 0 · 25 · 1 + 1 · 4 · 19 =100 76.