Elemi algoritmusok Páll Boglárka.

Slides:



Advertisements
Hasonló előadás
Oszthatósággal kapcsolatos feladatok pszeudokódban.
Advertisements

Átváltás a számrendszerek között
Elemi algoritmusok Páll Boglárka.
FEJEZETEK A MATEMATIKÁBÓL
Természetes számok 0, 1, 2, 3, ..., 24, 25, ..., 1231, 1232, ..., n, ...  = {0, 1, 2, 3, ..., n,...} a természetes számok halmaza Műveletek: összeadás.
Oszthatóság Az a osztója b-nek, ha van olyan egész szám, amivel a-t szorozva b-t kapok. (Az a osztója b-nek, ha egész számszor megvan benne.) Ha a|b, akkor.
83. (1 pont) A felsorolt végeredmények, hatások közül karikázza be a mondatszerű leírással (szöveggel) megadott algoritmus eredményét jelölő betűt, ha.
Elemi algoritmusok Páll Boglárka.
Feladat 1 •Tekintsük a prim alprogramot, amely az n, (n≤32000) paraméteren keresztül egy természetes számot kap és visszatéríti az 1–et, ha n prímszám.
Osztó, többszörös Osztó: azokat a számokat, amelyekkel egy B szám osztható, az B szám osztóinak nevezzük. Minden számnak legalább két osztója van, 1 és.
Az adatábrázolás, adattárolás módja a számítógépekben
Edény „vissza” rendezés
Számrendszerek T.R. Általában a számrendszerekről: Alapszám: N
Euklidészi gyűrűk Definíció.
Számhalmazok.
Algoritmusok Az algoritmus fogalma:
Algebra a matematika egy ága
Számelmélet Matematika Matematika.
Matematika: Számelmélet
Készítette: Pető László
Algebrai törtek.
AMFI KUPA és ami mögötte van…
A TERMÉSZETTUDOMÁNYOK ALAPJAI 1. Matematika
6. SZÁMELMÉLET 6.1. Oszthatóság
Edényrendezés - RADIX „vissza” - bináris számokra
Oszthatóság Az a osztója b-nek, ha van olyan egész szám, amivel a-t szorozva b-t kapok. (Az a osztója b-nek, ha egész számszor megvan benne.) Ha a|b, akkor.
2-es, Számrendszerek 10-es és 16-os Készítette: Varga Máté
1 Boole-Algebrák. 2 más jelölések: ^ = *, &, П v = +, Σ ~ = ¬
Csernoch Mária Számrendszerek Csernoch Mária
Az RSA algoritmus Fóti Marcell.
Egydimenziós tömbökön végezhető műveletek
Rendezési algoritmusok
A Pascal programozási nyelv alapjai
Ismétlés.
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
Ciklusok: 3. Hátultesztelő ciklus
Ciklusok: 1. Számlálós ciklus
Ciklusok: 2. Előltesztelő ciklus
Félévi típus feladatok
Feladatok: Algoritmusok Pszeudokódban
A Pascal programozási nyelv alapjai
Az algoritmusok áttekinthető formában történő leírására szolgáló eszközök Páll Boglárka.
Az oszd meg és uralkodj (Divide et Impera) programozási módszer
Lénárt Szabolcs Páll Boglárka
Félévin szereplő tipusfeladatok
Elemi algoritmusok Páll Boglárka.
Félévin szereplő tipusfeladatok. Feladat tipus 1 – elméleti kérdések: Pl: Írd le saját szavaiddal a számok számjegyekre bontási algoritmusát. Írd le saját.
Átalakítás előltesztelő ciklusból hátultesztelő ciklusba és fordítva.
Klasszikus Programozás a FoxPro-ban FELADATOK
Összetett adattípusok
Programozási feladatsor ciklusok gyakorlására Készítette: Rummel Szabolcs Elérhetőség:
AMFI KUPA és ami mögötte van…
Programozás I. Típus algoritmusok
Egyszerű cserés rendezés
Feladatok (értékadás)
Dodekaéder Hamilton köre
Alapműveletek (Természetes számok, Egész számok)
Átváltás a számrendszerek között
A természetes számok osztása, az osztás tulajdonságai
Kettes számrendszer.
Gráf szélességi bejárása. Cél Az algoritmus célja az, hogy bejárjuk egy véges gráf összes csúcsát és kiírjuk őket a kezdőcsúcstól való távolságuk szerint.
INFOÉRA 2006 Nagypontosságú aritmetika II.
Nevezetes algoritmusok
78. óra Prímszámok Röp: 1. Az osztó definíciója. 2. Dönts el és indokold: a.) osztható-e 125-tel? b.)
A legnagyobb közös osztó
A legkisebb közös többszörös
Átváltás a számrendszerek között
Algoritmusok Az algoritmus fogalma:
Számrendszerek.
Programozási tételek.
Előadás másolata:

Elemi algoritmusok Páll Boglárka

Elemi algoritmusok: Az elemi algoritmusok a klasszikus feladatokra adnak megoldásokat: Pl: Két szám értékének felcserélése Minimum, maximum meghatározása Bizonyos tulajdonsággal rendelkező elemek megszámolása Egy szám számjegyeinek meghatározása, számok alkotása számjegyekből Két szám legnagyobb közös osztójának meghatározása Prímszámok tesztelésére alkalmas algoritmus Egy szám osztóinak megkeresésére használt algoritmus Számrendszerek közti átalakításaok

2 1 1. Két szám felcserélése C A B Két szám felcseréléséhez egy segédváltozót kell használnunk (pohár módszer) 2 1 C A B

1. Két szám felcserélésének algoritmusa: Algoritmus felcserél Adottak a, b, c c:=a a:=b b:=c Vége.

2. Minimum és maximum meghatározása Az algoritmus több beolvasott szám (egy számsor) értékei közül határozza meg a legnagyobbat és a legkisebbet. Az algoritmus elején maximumnak és minimumnak az első elem értékét adjuk, majd a maximumot és minimumot összehasonlítjuk a számsor többi elemével

2. Minimum és maximum meghatározása Lépések: Beolvassuk az első a szám értékét Maximumnak, és minimumnak az első a szám értékét adjuk Beolvassuk a következő a számot Ha a> max vagy a<min akkor az a lesz az új maximum vagy minimum Folytatjuk a 3 lépéstől

Feladat: Határozzuk meg n szám maximumát és minimumát Algoritmus maxmin Adott a, n, i, max, min max:=a min:=a Minden i:=2 től n-ig végezd el Adott a Ha a>max akkor max:=a Ha vége Ha a<min akkor min:=a Minden vége Eredmény min, max Vége

3. Bizonyos tulajdonsággal rendelkező elemek megszámolása Lépések: Egyetlen ilyen tulajdonsággal rendelkező elemünk sem volt azaz db:=0 Beolvassuk az első a szám értékét Megvizsgáljuk, hogy az a teljesítí a feltételt, ha igen akkor növeljük a feltételt teljesítő elemek darabszámát Folytatjuk a 2 lépéstől azaz beolvassuk a következő a számot

Feladat: Határozzuk meg n szám közül hány páros Algoritmus darab Adott a, n, i, db db:=0 Minden i:=1 től n-ig végezd el Ha a mod 2=0 akkor db:=db+1 Ha vége Adott a Minden vége Eredmény db Vége

4. a) Egy szám számjegyeinek meghatározása Példa: n := 3652 számjegy := n mod 10 2 n:= n div 10 365 számjegy := n mod 10 5 n:= n div 10 36 számjegy := n mod 10 6 n:= n div 10 3 számjegy := n mod 10 3 n:= n div 10 0

4. a) Egy szám számjegyeinek meghatározása Lépések: n mod 10 művelettel meghatározzuk az n szám utolsó számjegyét a kapott számjegyet feldolgozzuk az eredeti n számból levágjuk a feldolgozott számjegyet, ez az n div 10 művelettel történik a fenti lépéseket addig ismételjük amíg az n számnak még vannak számjegyei, vagyis amíg n<>0-tól.

Feladat: Határozzuk meg az n szám számjegyeit Algoritmus számjegy Adott n, számjegy Amíg n<>0 végezd el számjegy:= n mod 10 Kiír számjegy n:=n div 10 Amíg vége Vége

4. b) Szám alkotása számjegyekből Példa: Alkossunk számot a 3 6 5 2 számjegyekből szám:=0 számjegy := 3 szám:= szám* 10 + 3 0+3 3 számjegy := 6 szám:= szám* 10 + 6 30+6 36 számjegy := 5 szám:= szám* 10 + 5 360+5 365 számjegy := 2 szám:= szám* 10 + 2 365 +2 3652

4. b) Szám alkotása számjegyekből Lépések: a szám kezdeti értéke 0 beolvassuk a sorra következő számjegy értékét a beolvasott számjegyet hozzáadjuk az eddig megalkotott szám 10-szereséhez addig folytatjuk a 2. lépéstől, amíg a beolvasott érték számjegy

Feladat: Határozzuk meg az n szám számjegyeit Algoritmus számjegy Adott nr:=0 Adott számjegy Amíg számjegy>=0 és számjegy<=9 végezd el nr:= nr *10 + számjegy Amíg vége Kiír nr Vége

5. Egy szám osztóinak megkeresésére használt algoritmus Az algoritmus egy beolvasott számnak megkeresi az összes osztóját Egy x szám összes osztói [1, x] között vannak. Pl: Keressük 15 osztóit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

5. Egy szám osztóinak megkeresésére használt algoritmus Lépések: Beolvassuk az x szám értékét Sorban tekintjük az x lehetséges osztóit az [1,x] intervallumból Megvizsgáljuk, hogy az x szám osztható-e az éppen vizsgált számmal Ha x mod lehetséges_oszto =0 akkor találtunk egy osztót és ezt kiírjuk Folytatjuk a 2 lépéstől

Feladat: Határozzuk meg n szám összes osztóját Algoritmus osztó Adott n Minden oszto:=1 től n-ig végezd el Ha n mod oszto =0 akkor Kiir oszto Ha vége Minden vége Vége

6. Prímszámok tesztelésére alkalmas algoritmus Prímszámnak, nevezzük azt a természetes számot, amelynek pontosan két osztója van, vagyis csak önmagával és 1-el osztható. A legelső pozitív prímszámok a következőek: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, …

6. Prímszámok tesztelésére alkalmas algoritmus Ahhoz, hogy megállapítsuk, hogy egy szám prímszám meg kell vizsgálni, hogy létezik e 1-nél nagyobb és önmagánál kisebb osztója. Ha létezik ilyen szám akkor nem prím, ellentkező esetben pedig prím. Úgy járunk el, hogy kezdetben feltételezzük, hogy a szám prím, majd megvizsgáljuk az összes lehetséges osztót 2 és n div 2 között és ha találunk ilyet akkor a számunk már nem pímszám.

Példa n= 41 feltételezem n prim Vizsgálom az osztóit 2 és 20 között 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 n=169 feltételezem n prim Vizsgálom az osztóit 2 és 84 között 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 169 mod 13 = 0 tehát a szám nem prím 41 mod osztó <> 0 minden esetben, tehát n prím

6. Prímszámok tesztelésére alkalmas algoritmus Algoritmus prím Adott n prím:=igaz Minden oszto:=2 től (n div 2) -ig végezd el Ha n mod oszto =0 akkor prim:=hamis Ha vége Minden vége Ha prim=igaz akkor Kiír ‘A szám prim’ Különben Kiír ‘A szám nem prim’ Vége

7. Két szám legnagyobb közös osztójának meghatározása 1. Ismételt kivonásos módszer A B Kivonás (nagyobb - kisebb) 48 36 48 - 36 = 12 12 36 - 12 = 24 24 24 – 12 = 12 A=B, lnko = 12, lkkt = 48 * 36 / 12 = 144

7. Két szám legnagyobb közös osztójának meghatározása 1. Ismételt kivonásos módszer A B Kivonás (nagyobb - kisebb) 37 17 37 - 17 = 20 20 20 - 17 = 3 3 17 - 3 = 14 14 14- 3 = 11 11 11 - 3 = 8 8 8 - 3 = 5 5 5 - 3 = 2 2 3 - 2 = 1 1 2 - 1 = 1 A=B, lnko = 1, lkkt = 37 * 17 / 1 = 629

7. Két szám legnagyobb közös osztójának meghatározása 1. Ismételt kivonásos módszer Algoritmus leírása Amíg a két szám különbözik egymástól, a nagyobbikból kivonjuk a kisebbiket, és a nagyobbikban megőrizzük a különbséget. Az lnko az utolsó külöbnség lesz. Az lkkt-t úgy kapjuk meg, hogy a két szám szorzatát osztjuk az lnko-val

7. Két szám legnagyobb közös osztójának meghatározása Algoritmus Eukleidesz Adott a, b Amig (a<> b) vegezd el Ha (a>b) akkor a:=a-b kulonben b:=b-a Amig vege lnko :=b Kiir ‘lnko’ Algoritmus vege

7. Két szám legnagyobb közös osztójának meghatározása 2. Ismételt osztással – Euklidész algoritmus A B R = A mod B 48 36 48 % 36 = 12 12 36 % 12 = 0 Maradék 0, lnko = 12 Lkkt = 48 * 36 / 12 = 144 A B R = A mod B 37 17 37 % 17 = 3 3 17 % 3 = 2 2 3 % 2 = 1 1 2 % 1 = 0 Maradék 0, lnko = 1 Lkkt = 37 * 17 / 1 = 629

7. Két szám legnagyobb közös osztójának meghatározása 2. Ismételt osztással – Euklidész algoritmus Algoritmus leírása Elosztjuk a-t b-vel. Legyen azt osztási maradék r. Amíg a maradék nem nulla, ismételten áthelyezzük b-t a-ba, r-t b-be és folytatjuk az osztásokat Az utolsó osztó (b) éppen az lnko lesz. Az lkkt-t úgy kapjuk meg, hogy a két szám szorzatát osztjuk az lnko-val

7. Két szám legnagyobb közös osztójának meghatározása Algoritmus Eukleidesz Adott a, b r:=a mod b, Amig (r≠0) vegezd el a:=b; b:=r; r:=a mod b Amig vege lnko:=b Algoritmus vege

8. Számrendszerek közti átalakítások 1. eset: 10 –es számrendszerből q számrendszerbe való átalakítás Példa: 123 10 q 6 q6 = 0 123 mod 6 = 3 p=1 q6 = q6 + 3*p =3 123 div 6 = 20, 20 mod 6 = 2 p=10 q6 = q6 + 2*p =23 20 div 6 = 3, 3 mod 6 = 3 p=100 q6 = q6 + 3*p =323 3 div 6 = 0, 1236 = 323

Számrendszerek közti átalakításaok Példa: 96510 q8 q8 = 0 965 mod 8 = 5, p = 1 q8 = q8 + 5*p =5 965 div 8 = 120, 120 mod 8 = 0, p = 10 q8 = q8 + 0*p =5 120 div 8 = 15, 15 mod 8 = 7, p = 100 q8 = q8 + 7*p=705 15 div 8 = 1, 1 mod 8 = 1, p = 1000 q8 = q8 + 1*p = 1705 1 div 8 = 0, 9658 = 1705

8. Számrendszerek közti átalakítások Lépések: 1. Addig osztjuk a 10-es számrendszerbeli számot q értékével amíg a hányados különbözik 0-tól. 2. Az osztások alkalmával kapott maradékok fordított sorrendben alkotják az adott szám q-számrendszerbeli alakját.

Algoritmus számrendszer Adott n, nq, p, q nq : = 0 p := 1 Amig n<> 0 végezd el nq:= nq + p * (n mod q) n:= n div q p:= p* 10 Amig vége Kiir nq Vége