Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Elemi algoritmusok Páll Boglárka
2
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
3
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
4
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.
5
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
6
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
7
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
8
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
9
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
10
4. a) Egy szám számjegyeinek meghatározása
Példa: n := 3652 számjegy := n mod 10 2 n:= n div számjegy := n mod 10 5 n:= n div számjegy := n mod 10 6 n:= n div számjegy := n mod 10 3 n:= n div
11
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.
12
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
13
4. b) Szám alkotása számjegyekből
Példa: Alkossunk számot a számjegyekből szám:=0 számjegy := 3 szám:= szám* számjegy := 6 szám:= szám* számjegy := 5 szám:= szám* számjegy := 2 szám:= szám*
14
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
15
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
16
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
17
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
18
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
19
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, …
20
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.
21
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
22
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
23
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 = 12 12 = 24 24 24 – 12 = 12 A=B, lnko = 12, lkkt = 48 * 36 / 12 = 144
24
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 = 20 20 = 3 3 = 14 14 14- 3 = 11 11 = 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
25
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
26
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
27
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
28
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
29
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
30
8. Számrendszerek közti átalakítások
1. eset: 10 –es számrendszerből q számrendszerbe való átalakítás Példa: q 6 q6 = 0 123 mod 6 = 3 p= q6 = q6 + 3*p = div 6 = 20, 20 mod 6 = p= q6 = q6 + 2*p = div 6 = 3, 3 mod 6 = p= q6 = q6 + 3*p = div 6 = 0, 1236 = 323
31
Számrendszerek közti átalakításaok
Példa: q8 q8 = 0 965 mod 8 = 5, p = q8 = q8 + 5*p = div 8 = 120, 120 mod 8 = 0, p = q8 = q8 + 0*p = div 8 = 15, 15 mod 8 = 7, p = q8 = q8 + 7*p= div 8 = 1, 1 mod 8 = 1, p = q8 = q8 + 1*p = div 8 = 0, 9658 = 1705
32
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.
33
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.