1 / 20

Elemi algoritmusok

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

wind
Download Presentation

Elemi algoritmusok

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • Egy szám osztóinak megkeresésére használt algoritmus • Prímszámok tesztelésére alkalmas algoritmus • Két szám legnagyobb közös osztójának meghatározása • Számrendszerek közti átalakításaok

  3. 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

  4. 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

  5. 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. 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 és1-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, …

  7. 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.

  8. 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 Példa 169 mod 13 = 0 tehát a szám nem prím 41 mod osztó <> 0 minden esetben, tehát n prím

  9. 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’ Ha vége Vége

  10. 7. Két szám legnagyobb közös osztójának meghatározása 1.Ismételt kivonásos módszer

  11. 7. Két szám legnagyobb közös osztójának meghatározása 1.Ismételt kivonásos módszer

  12. 7. Két szám legnagyobb közös osztójának meghatározá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 1.Ismételt kivonásos módszer • Algoritmus leírása

  13. 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

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

  15. 7. Két szám legnagyobb közös osztójának meghatározá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 • 2. Ismételt osztással– Euklidész algoritmus • Algoritmus leírása

  16. 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

  17. 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 123 6 1236 = 0 123 mod 6 = 3 p=11236 = 1236 + 3*p =3 123 div 6 = 20, 20 mod 6 = 2 p=10 1236 = 1236 + 2*p =23 20 div 6 = 3, 3 mod 6 = 3 p=1001236 = 1236 + 3*p =323 3 div 6 = 0, 1236 = 323

  18. 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 = 10q8 = q8 + 0*p =5 120 div 8 = 15, 15 mod 8 = 7, p =100q8 = 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

  19. 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.

  20. 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

More Related