• Nem Talált Eredményt

Maradékos osztás

In document Bevezetés a számításelméletbe (Pldal 116-121)

Az egész számokon elvégzendő műveleteket, az összeadást, az egyszeregyet és az erre épülő szorzást már általános iskolában évekig gyakoroltuk. Ugyancsak megtanultuk, hogy ha egy egész számot egy másikkal osztunk, akkor az vagy megvan maradék nélkül, vagy az osztás valamilyen maradékot ad. Az alábbiakban ezeket a fogalmakat pontosítjuk, és megadjuk azok elméleti alapjait.

5.1.1. Definíció

A maradékos osztás az a művelet, melynek során az n és az mO0 egész számokhoz meghatározzuk azt a q és az r egész számot, amelyre

n=m qCr, (0% r !m).

Az n számot osztandónak, a m-et osztónak nevezzük, q a maradékos osztás hányadosa, r pedig a maradék.

A maradékos osztás során tehát két dolgot is meghatározunk, az osztás hányadosát és maradékát.

A keletkező hányados jelölésére az n div m jelsorozatot használjuk q= n div m,

míg a maradékot az n mod m jelsorozattal jelöljük r=n mod m.

Példák

1. Mivel 19 = 6$3C1, ezért a 19-nek 6-tal való maradékos osztásának hányadosa 3, maradéka 1.

Formulával

19 div 6 = 3 és 19 mod 6 = 1.

2. Ugyanakkor K19 = 6$ K4 C5, tehát -19-nek 6-tal való maradékos osztásának hányadosa -4, maradéka 5. Tehát

K19 div 6 = K4 és K19 mod 6 = 5.

3. 8 = 12$0C8, tehát 8-nak a 12-vel való maradékos osztásának hányadosa 0, maradéka pedig 8.

Eszerint

8 div 12 = 0 és 8 mod 12 = 8.

4. Ugyanakkor K8 = 12$ K1 C4, tehát -8-nak a 12-vel való maradékos osztásának hányadosa (-1), maradéka 4. Jelekkel

2

K8 div 12 = K1 és K8 mod 12 = 4 .

5. A maradékos osztáshoz kapcsolódó div és mod műveletek gyakorlati alkalmazására példát ad a 32 lapos magyar kártya kezelése. Egy ilyen a pakliban négyféle színű kártyák vannak: makk, piros, tök és zöld. Ezekhez a színekhez hozzárendelhetjük rendre a 0, 1, 2 és 3 egészeket.

A magyar kártya mindegyik színből nyolc-nyolc lapot tartalmaz: VII, VIII, IX, X, Alsó, Felső, Király és Ász. Ezekhez a lapokhoz a 0, 1, ..., 7 számokat rendelve a kártya lapjait egy-egy

nemnegatív egész számmal jellemezhetjük oly módon, hogy egyszerűen egymás mellé írjuk a szín és szám kódot és a két számjegyet összeolvasva egy legfeljebb kétjegyű számot kapunk. Például piros kódja 1 az alsóé pedig 4 így a piros alsót a 14 szám jellemzi. Kicsit furcsa a makk lapok esete, mert ezek színkódja 0. Így például a makk nyolcas kódja 02, amit egyszerűen 2-nek, vagyis egyjegyű számnak tekintünk.

Azt kérdezzük, hogyan lehet a kártya kódjának ismeretében meghatározni a színt és azon belül a kártya nevét. Milyen színű például a 36 kódal rendelkező kártya? Ránézésre látjuk, hogy 3, ám ez az érték nem más, mint 36 div 10. Ezek szerint a kártya színe tök. A lap sorszáma a kód második jegye, ami a 36 mod 10 = 6 művelettel állítható elő. Tehát a 36 kódszámú kártya a tök király.

A maradékos osztás és a jelölések bevezetésénél eléggé magabiztosan jártunk el, annak ellenére, hogy két kérdésre korántsem nyilvánvaló a válasz.

Létezés. Elvégezhető-e korlátozás nélkül a maradékos osztás? Vagy másként, minden n és mO0 egész esetén létezik-e olyan q és r egész, ami kielégíti a 1.1. definíció feltételeit?

Egyértelműség. Egyértelműen meghatározott-e a maradékos osztás hányadosa és maradéka minden n és mO0 egész esetén?

Ugyanis ez az a két tulajdonság, melynek teljesülése nélkül aligha nevezhetnénk a maradékos osztást megfelelő algebrai műveletnek. A létezés nem teljesülése azt jelentené, hogy bizonyos számokra a maradékos osztás nem végezhető el. Ezzel még együtt lehetne élni, hiszen például a gyökvonást sem tudjuk a negatív számokra elvégezni, mégis a függvények vizsgálata során nem nélkülözhető a használata.

Az egyértelműség nem teljesülése azonban azt jelentené, hogy bizonyos esetekben többféle hányados vagy maradék keletkezhet a művelet eredményeként. A következő tétel azonban azt mutatja, hogy a maradékos osztás műveletének bevezetése során nem követtünk el hibát.

5.1.2. Tétel

Legyen mO0 egész szám. Ekkor minden n egész számra létezik olyan egyértelműen meghatározott q és r egész szám, amelyre

n=m qCr és 0% r !m teljesül.

Mielőtt a bizonyításra rátérnénk, világítsuk meg példákkal a maradékos osztás vielkedését!

Nézzük meg közelebbről a 19 = 6$3C1 maradékos osztást és első lépésként írjunk fel néhányat a 6$q alakú számokból:

..., K24, K18, K12, K6, 0, 6, 12, 18, 24, ...

A vizsgált 19 a 18 (= 6$3) és a 24 (= 6$4) közé esik. Tehát q= 3 az az egész szám, amelyre 6 $3%19!6$4 .

Az osztás eredménye, a hányados 3 a maradék pedig 1 = 19K6$3.

Ugyanígy a -19 a -24 (=6$ K4 ) és -18 (=6$ K3 ) közé esik. Ez esetben is q=K4 az az egész szám, amelyre

3

6$ K4 %K19!6$ K3 . Ekkor a hányados K4, a maradék pedig 5 = K19K6$ K4 .

A példák önmagukért beszélnek. A megoldás kulcsa tehát abban áll, hogy minden n egész szám valamely q egész számra m$q és m$ qC1 közé esik, pontosabban

m$q%n!m$ qC1 .

Miután megtaláltuk a fenti tulajdonságú q egészet, azt mondhatjuk ez a q lesz a maradékos osztás hányadosa, tehát n div m=q, a maradék pedig az az érték, amennyivel n nagyobb m$q-nál, vagyis r=nKm$q.

Bizonyítás

Tekinstük a q egészszámú többszöröseit és hasonlítsuk azokat össze n-nel! Legyen q az az egész, amelyre

m$q%n!m$ qC1

teljesül. Ilyen q létezése szemléletünk alapján világos. Egzakt belátásához azonban szükség van a jólrendezés tételére, melyet a harmadik előadásban mutatunk be.

Most azonban fogadjuk el q létezését és vonjuk ki m$q-t a fenti egyenlőtlenség minden oldalából!

Azt kapjuk, hogy

0%nKm$q!m$ qC1 K m$q=m .

Ekkor az r=nKm q választás mellett a tétel állításai teljesülnek. Valóban, n=m$qCr, és 0% r

!m.

Az egyértelműség bizonyításához tegyük fel, hogy az n számnak létezik két, a tétel feltételeit kielégítő előállítása

n=m q1Cr1 (0% r1!m), n=m q2Cr2 (0% r2!m . Az általánosság megszorítása nélkül feltehetjük, hogy r2%r1. Ekkor

0%r1Kr2!m,

hiszen két 0 és m közé eső szám különbségét vettük. Vonjuk ki a felső egyenlőségből az alsót! Azt kapjuk, hogy

0 =m$q1Km$q2Cr1Kr2 , amit átrendezve az

m$ q2Kq1 =r1Kr2 egyenlőséghez jutunk.

És most vizsgáljuk meg a q2Kq1 különbséget! Ha ez pozitív lenne, akkor m$ q2Kq1 Rm teljesülne, ám ez lehetetlem mert m$ q2Kq1 = r1Kr2!m. Ugyanakkor a q2Kq1 különbség negatív sem lehet, mert ez esetben m$ q2Kq1 !0 teljesülne, holott ez 0%r1Kr2 miatt

lehetetlen. Eszerint szükségképpen q2Kq1= 0, amiből q1=q2 és r1=r2 következik. Megmutattuk tehát, hogy a két előállítás megegyezik.

Az 5.1.2. tétel biztosítja a maradékos osztás során keresett hányados (= q) és maradék (= r)

4

létezését, egyértelműségét is, sőt kapaszkodót is ad ahhoz, hogy kidolgozzuk azt a számítási eljárást, idegen szóval algoritmust, melynek segítségével a hányados és a maradék

meghatározható. Azt esetet dolgozzuk ki, amikor n nemnegatív.

Legyen tehát nR0. Ekkor eljárhatunk a következőképpen. Rendre vesszük az m$0, m$1,m$2, ...,m$q, ...

számokat mindaddig, amíg n-nél nagyobb értéket nem találunk. A legutolsó olyan q érték, amelyre m$q%n teljesül, a keresett hányados. Ennek ismeretében pedig a keresett maradék r=nKm$q. Az alábbi ábra ezt az eljárást szemlélteti a q= 3 esetre.

Ennek az eljárásnak az a hátránya, hogy az m$q szorzatokkal túl kell lépni az n-en ahhoz, hogy észrevegyük azt, hogy az előző lépésben megtaláltuk a keresett hányadost. Ez a hátrány azonban kiküszöbölhető, ha észrevesszük, hogy visszafelé és számolhatunk. Kezdjük el n-ből kivonni m-et, ezt ismételjük addig, amíg m-nél kisebb értékhez nem jutunk.

Az m-mel való csökkentéssel pontosan q lépés után kapunk m-nél kisebb értéket, és ez az érték nem más, mint a keresett maradék.

A következőkben a maradékos osztás algoritmusának kétféle reprezentációját adjuk meg. A baloldali cellában egy, a természetes nyelvhez közelebb álló, ám ennek következtében kevésbé tömör, és nem mindíg egyértelmű szöveges leírást, míg a jobboldali cellában a Maple szintaxisára alapuló reprezentációt láthatunk, melyet Maple metakódnak nevezünk. A Maple metakódban a Maple utasításait, kulcsszavait haszáljuk, ám elvonatkoztatunk az adatok típusától és az

esetlegesen szükségessé váló konverzióktól. A`:=` jelsorozat az értékadás jele, az egy sorba írt utasításokat kettősponttal választjuk el egymástól. Figyeljük meg azt is, hogy a Maple ciklus utasításában a `do` és `od` kulcsszavak zárják közre a ciklusmag utasításait.

5.1.3. Algoritmus: Maradékos osztás

Szöveges leírás Maple metakód

1. Input: nR0 az osztandó, mO0 az osztó 2. A q kezdőértéke legyen 0, az r kezdőértéke legyen n

3. Mindaddig, amíg rRm, hajtsuk végre a következő utasításokat

Input: nR0 az osztandó, mO0 az osztó qd0 :rdn

while rRm do

qdqC1 : rdrKm od

5

A maradékososztás eljárás első paramétere az osztandó, második az osztó.

maradékososztás(19,6);

3, 1

Az exp opciót használva a maradékososztás a definícióban használt formában jeleníti meg outputját.

maradékososztás(19,6,exp);

Eredmény(maradékososztás):

19 = 6*3 C 1

Nézzük meg, hogy működik ez az eljárás konkrét számok esetén. A példa kedvéért osszuk el az n= 23-at m= 6-tal. A 2. lépésben q felveszi a 0, r pedig a 23 kezdőértéket. A 3. lépésben

ellenőrizzük, hogy az r értéke (=23) nagyobb vagy egyenlő-e, mint m (=6). Ha igen, és most ez a helyzet, akkor végrehajtjuk a ciklus magjában található két utasítást. Először megnöveljük a q értékét eggyel és kapjuk, hogy q= 1, másodszor az r értékéből kivonjuk m-et, és a kapott 17 lesz r új értéke.

Ezzel az új értékkel megismételjük az eddigieket. Újra összehasonlítjuk r-t és m-et, és mivel 17 R6, ezért a q-t ismét 1-gyel növeljük, r-et pedig 6-tal csökkentjük. Így a ciklus második futása után q= 2 és r= 11. Mivel 11 még mindig nagyobb, mint 6, így a ciklus harmadszorra is lefut, és beállítja a q= 3 és r= 5 értékeket. Ekkor azonban már nem teljesül az rRm feltétel, így a ciklus futása befejeződik.

A kézi számolásnál mindíg törekszünk arra, hogy a számolás során keletkezett részeredményeket áttekinthető módon kezeljük. Ennek jól használható módja az adatok és részeredmények

táblázatos elrendezése. Magát a számolást két fázisban végezzük el. Az első fázis a számolótábla kezdő értékeinek beállítása, az ú.n. inicializálás, melynek eredménye a bal oldali cellában látható.

A második fázis a tábla kitöltése, az algoritmusban meghatározott műveleteknek megfelelően.

Inicializálás

n= 23, m= 6

q r

0 23

Feltüntetjük az algoritmus bemenő adatait,

Végrehajtás

n= 23, m= 6

q r

0 23

1 17

6

jelöli az elvégzett kivonások számát, tehát kezdőértéke 0, és minden lépésben értéke eggyel nő. Az r kezdőértéke n, és értéke minden lépésben m-mel csökken.

2 11

3 5

23 div 6 = 3, 23 mod 6 = 5

A tábla kitöltését soronként végezzük. Az aktuális sort követő új sor q oszlopának elemét úgy kapjuk, hogy a felette levő cella tartalmát 1-gyel növeljük. A sor második cellájának tartalmát pedig úgy kapjuk meg, hogy a felette lévő cella tartalmát m-mel, vagyis az osztó értékével csökkentjük. Ezt az eljárást addig végezzük, amíg az aktuális sor r jelű oszlopában lévő szám nagyobb, vagy egyenlő, mint m értéke. Az utolsó sor q jelű oszlopában találjuk a hányadost, az r jelű oszlopában a maradékot.

Példák

Az ant csomag eljárásai alkalmasak arra, hogy a kézi számolás lépéseit bemutassák. Ehhez az ini (initialization) illetve a calc (calculation) opciók használata szükséges. Mint azt a második utasítás mutatja, az opciókból akárhány használható, és ekkor az eljárás mindegyik opció által előírt feladatot elvégzi. A eljárások nem érzékenyek az opciók sorrendjére sem.

maradékososztás(19,6,ini);

In document Bevezetés a számításelméletbe (Pldal 116-121)