Algoritmy. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

Podobné dokumenty
2. lekce Algoritmus, cyklus Miroslav Jílek

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Základy algoritmizace

IB111 Programování a algoritmizace. Programovací jazyky

Úvod. Programovací paradigmata

Program a životní cyklus programu

Seminář z Informatiky a výpočetní techniky. Slovanské gymnázium Olomouc 4. září 2014 Tomáš Kühr

IB111 Úvod do programování skrze Python Přednáška 13

Jaký programovací jazyk učit jako první a jak ho učit?

Algoritmy. BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Výukový materiál zpracován v rámci projektu EU peníze školám

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod. Róbert Lórencz. lorencz@fel.cvut.cz

DTP Základy programování Úvod do předmětu

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Lekce 01 Úvod do algoritmizace

6. Základy výpočetní geometrie

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmizace- úvod. Ing. Tomáš Otáhal

Programování a algoritmizace

Základy matematické analýzy

Vzdělávací oblast: Matematika a její aplikace Vzdělávací obor: Matematický kroužek pro nadané žáky ročník 9.

Lekce 04 Řídící struktury

Dekompozice problému, rekurze

M - Příprava na 3. čtvrtletní písemnou práci

Trocha teorie Ošklivé lemátko První generace Druhá generace Třetí generace Čtvrtá generace O OŠKLIVÉM LEMÁTKU PAVEL JAHODA

Příkazy if, while, do-while, for, switch

Programování I. Martin Pergel, 10. října Martin Pergel, Programování I

Principy indukce a rekurentní rovnice

)(x 2 + 3x + 4),

Programování I. Martin Pergel,

Algoritmizace. 1. Úvod. Algoritmus

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Martin Hejtmánek hejtmmar

Kód trezoru 1 je liché číslo.

Základy elementární teorie čísel

Základy algoritmizace a programování

Jednoznačné a nejednoznačné gramatiky

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Přijímací zkouška na MFF UK v Praze

pro každé i. Proto je takových čísel m právě N ai 1 +. k k p

1 Mnohočleny a algebraické rovnice

Základy algoritmizace a programování

8. RSA, kryptografie s veřejným klíčem. doc. Ing. Róbert Lórencz, CSc.

Základy elementární teorie čísel

NPRG030 Programování I, 2018/19 1 / :25:37

Basic256 - úvod do programování Příklady. ing. petr polách

Okruhy, podokruhy, obor integrity, těleso, homomorfismus. 1. Rozhodněte, zda daná množina M je podokruhem okruhu (C, +, ): f) M = { a

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Matematika pro informatiky

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Informatika Algoritmy

1 Mnohočleny a algebraické rovnice

Klauzurní část školního kola kategorie A se koná

Algoritmizace a programování

Hlubší věty o počítání modulo

Matematika pro všechny

Algoritmizace a programování

Zimní semestr akademického roku 2014/ prosince 2014

Derivace funkce. prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. Katedra matematiky BI-ZMA ZS 2009/2010

Gymnázium Jiřího Ortena, Kutná Hora

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Principy indukce a rekursivní algoritmy

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Přijímací zkouška na navazující magisterské studium 2015

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Předpokládané znalosti žáka 1. stupeň:

. Určete hodnotu neznámé x tak, aby

19 Eukleidovský bodový prostor

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

1 Základy algoritmizace a programování. 1.1 Algoritmus Možnosti zápisu algoritmů. Základy algoritmizace a programování

Největší společný dělitel

Dynamické programování

Základy a aplikace digitálních. Katedra radioelektroniky (13137), blok B2, místnost 722

Funkce, procedury, složitost

ALGORITMIZACE PROGRAMOVÁNÍ VT3/VT4

Závěrečná zkouška z informatiky 2011

Hledáme lokální extrémy funkce vzhledem k množině, která je popsána jednou či několika rovnicemi, vazebními podmínkami. Pokud jsou podmínky

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

Základy aritmetiky a algebry II

Úvod do programování

Mgr. Ladislav Zemánek Maturitní okruhy Matematika Obor reálných čísel

( ) ( ) ( ) ( ) Skalární součin II. Předpoklady: 7207

IB111 Úvod do programování skrze Python Přednáška 13

PŘIJÍMACÍ TEST z informatiky a matematiky pro navazující magisterské studium Fakulta informatiky a managementu Univerzity Hradec Králové

ALGORITMIZACE Příklady ze života, větvení, cykly

Programování. Úvod a základní principy. Martin Urza

MATEMATIKA. Příklady pro 1. ročník bakalářského studia. II. část Diferenciální počet. II.1. Posloupnosti reálných čísel

Zimní semestr akademického roku 2014/ prosince 2014

Šifrová ochrana informací věk počítačů PS5-2

CVIČNÝ TEST 22. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15

Transkript:

Algoritmy BI-PA1 Programování a Algoritmizace I. Ladislav Vagner Katedra teoretické informatiky Fakulta informačních technologíı ČVUT v Praze xvagner@fit.cvut.cz 3. října 2016 a 4. října 2016

Kontakt místnost A 1233, KTI FIT, e-mail: xvagner@fit.cvut.cz, agenda: prosemináře, Progtest. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 2/35

Programovací jazyky a styly Imperativní (procedurální) programování: Pascal, strojový kód,... Funkcionální programování: Haskell, Lisp,... Logické (deklarativní) programování: Prolog, SQL, XSLT,... OO programování: Eiffel, Objective C, Smalltalk,... L. Vagner, ČVUT FIT Algoritmy, BI-PA1 3/35

Programovací jazyky a styly Imperativní (procedurální) programování: Pascal, strojový kód,... Funkcionální programování: Haskell, Lisp,... Logické (deklarativní) programování: Prolog, SQL, XSLT,... OO programování: Eiffel, Objective C, Smalltalk,... Kam patří Java, C++, a C? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 3/35

Algoritmy Vlastnosti algoritmu: Hromadnost (univerzálnost). Jednoznačnost (determinismus). Poskytuje výsledky (resultativnost). Konečnost. Vstupy. Výstupy. Složitost. Zápis algoritmu: textová podoba (pseudokód, programovací jazyk), grafická podoba (vývojový diagram flow chart). L. Vagner, ČVUT FIT Algoritmy, BI-PA1 4/35

Algoritmy Základní elementy při zápisu algoritmu: vstupní bod, koncový bod, větvení, příkaz. Odvozené: smyčky (= větvení + návrat), I/O operace (= speciální typ příkazu), vyvolání jiného algoritmu (= speciální typ příkazu). L. Vagner, ČVUT FIT Algoritmy, BI-PA1 5/35

Algoritmy vývojové diagramy Elementy vývojového diagramu: Vstupní bod Koncový bod Podmínka (větvení) Příkaz I/O operace L. Vagner, ČVUT FIT Algoritmy, BI-PA1 6/35

Algoritmy vývojové diagramy Příklad: algoritmus načte dvě čísla a zobrazí větší z nich. READ A,B + - A > B WRITE A WRITE B END L. Vagner, ČVUT FIT Algoritmy, BI-PA1 7/35

Algoritmy pseudokód Příklad: algoritmus načte dvě čísla a zobrazí větší z nich. ČTI A, B POKUD A > B ZOBRAZ A JINAK ZOBRAZ B L. Vagner, ČVUT FIT Algoritmy, BI-PA1 8/35

Algoritmy kvadratická rovnice Úkol: vymyslet a zapsat algoritmus, který dokáže vyřešit zadanou kvadratickou rovnici. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 9/35

Algoritmy kvadratická rovnice ČTI a, b, c d := b * b - 4 * a * c x1 := (-b + sqrt ( d )) / 2 / a x2 := (-b - sqrt ( d )) / 2 / a ZOBRAZ x1, x2 Je tento algoritmus správný? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 10/35

Algoritmy kvadratická rovnice ČTI a, b, c d := b * b - 4 * a * c x1 := (-b + sqrt ( d )) / 2 / a x2 := (-b - sqrt ( d )) / 2 / a ZOBRAZ x1, x2 Je tento algoritmus správný? Co se stane pro a = 0? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 10/35

Algoritmy kvadratická rovnice ČTI a, b, c d := b * b - 4 * a * c x1 := (-b + sqrt ( d )) / 2 / a x2 := (-b - sqrt ( d )) / 2 / a ZOBRAZ x1, x2 Je tento algoritmus správný? Co se stane pro a = 0? Co se stane pro d < 0? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 10/35

Algoritmy kvadratická rovnice ČTI a, b, c POKUD a = 0 ZOBRAZ "Neni kvadraticka rovnice" d := b * b - 4 * a * c POKUD d < 0 ZOBRAZ "Neexistuje realne reseni" x1 := (-b + sqrt ( d )) / 2 / a x2 := (-b - sqrt ( d )) / 2 / a ZOBRAZ x1, x2 L. Vagner, ČVUT FIT Algoritmy, BI-PA1 11/35

Algoritmy protiletecká obrana Úkol: algoritmus pro řízení obranné rakety určí správné nastavení náměru α d tak, aby raketa sestřelila nepřátelskou střelu. Víme, že obranná střela letí rychlostí v d a odpáĺıme ji se zpožděním t 0. Nepřátelskou střelu musíme zasáhnout ve vzestupné fázi letu. Pokud to nelze splnit, algoritmus na to musí upozornit. Z radaru o nepřátelské střele víme: vzdálenost místa odpálení l, rozdíl nadmořských výšek h, náměr nepřátelské střely α e a rychlost nepřátelské střely v e. v d v e α e α d h L. Vagner, ČVUT FIT Algoritmy, BI-PA1 12/35 l

Algoritmy protiletecká obrana Z fyzikálního popisu dráhy střel získáme následující rovnice: x e = l v e t cos α e y e = h + v e t sin α e gt2 2 x d = v d (t t 0 ) cos α d y d = v d (t t 0 ) sin α d g(t t 0) 2 2 V okamžiku střetu t x platí, že x e = x d a y e = y d : t x = l + t 0 v d cos α d v e cos α e + v d cos α d = 2t 0 v d sin α d + 2h + gt 2 0 2v d sin α d + 2gt 0 2v e sin α e L. Vagner, ČVUT FIT Algoritmy, BI-PA1 13/35

Algoritmy protiletecká obrana Po úpravách vyjde: Kde: α d1 = 2 arctan B + A 2 + B 2 C 2 A C α d2 = 2 arctan B A 2 + B 2 C 2 A C A = gt 2 0v d 2t 0 v d v e sin α e 2hv d B = 2lv d 2t 0 v d v e cos α e C = 2lgt 0 2lv e sin α e 2hv e cos α e gt 2 0v e cos α e L. Vagner, ČVUT FIT Algoritmy, BI-PA1 14/35

Algoritmy protiletecká obrana Derivací určíme, že nepřátelská střela dosáhne vrcholu stoupání v čase: t max = v e sin α e g Pro vypočtené hodnoty úhlu α d musíme vypočítat okamžik střetu: t x1 = t x2 = l + t 0 v d cos α d1 v e cos α e + v d cos α d1 l + t 0 v d cos α d2 v e cos α e + v d cos α d2 Střelu lze sestřelit pouze s nastavením, pro které je t x t max. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 15/35

Algoritmy protiletecká obrana ČTI l, h, t0, ve, vd, ae tmax := ve * sin(ae) / g A := g*t0*t0*vd - 2*t0*vd*ve*sin(ae) - 2*h*vd B := 2*l*vd - 2*t0*vd*ve*cos(ae) C := 2*l*g*t0-2*l*ve*sin(ae) - 2*h*ve*cos(ae) - g*t0*t0*ve*cos(ae) D := A*A + B*B - C*C POKUD D < 0 ZOBRAZ "Nelze zasahnout" tmax := ve * sin(ae) / g ad1 := 2*atan2( A-C, B + sqrt(d) ) tx1 := (l + t0*vd*cos(ad1)) / (ve*cos(ae) + vd*cos(ad1)) POKUD tx1 <= tmax ZOBRAZ "Namer ", ad1 ad2 := 2*atan2( A-C, B - sqrt(d) ) tx2 := (l + t0*vd*cos(ad2)) / (ve*cos(ae) + vd*cos(ad2)) POKUD tx2 <= tmax ZOBRAZ "Namer ", ad2 ZOBRAZ "Nelze zasahnout" L. Vagner, ČVUT FIT Algoritmy, BI-PA1 16/35

Algoritmy minimum, maximum a prostřední číslo Úkol: pro tři zadaná čísla a, b a c (navzájem různá) určit maximum, minimum a prostřední číslo. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 17/35

Algoritmy minimum, maximum a prostřední číslo ČTI a, b, c POKUD a > b POKUD a > c max := a POKUD b > c mid := b min := c JINAK mid := c min := b JINAK max := c mid := a min := b JINAK POKUD b > c max := b POKUD a > c mid := a min := c JINAK mid := c min := a JINAK max := c mid := b min := a ZOBRAZ "Maximum", max ZOBRAZ "Prostredni", mid ZOBRAZ "Minimum", min L. Vagner, ČVUT FIT Algoritmy, BI-PA1 18/35

Algoritmy minimum, maximum a prostřední číslo ČTI a, b, c max := a POKUD b > max max := b POKUD c > max max := c min := a POKUD b < min min := b POKUD c < min min := c mid := a + b + c - min - max ZOBRAZ "Maximum", max ZOBRAZ "Prostredni", mid ZOBRAZ "Minimum", min L. Vagner, ČVUT FIT Algoritmy, BI-PA1 19/35

Algoritmy společný dělitel a násobek Úkol: zapsat algoritmus, který pro zadaná přirozená čísla a a b určí jejich největší společný dělitel a nejmenší společný násobek. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 20/35

Algoritmy společný dělitel a násobek ČTI a, b prod := a * b DOKUD a <> b POKUD a > b a := a - b JINAK b := b - a gcd := a lcm := prod / gcd ZOBRAZ "Nejvetsi spolecny delitel", gcd ZOBRAZ "Nejmensi spolecny nasobek", lcm Je tento algoritmus efektivní? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 21/35

Algoritmy společný dělitel a násobek ČTI a, b prod := a * b DOKUD a <> b POKUD a > b a := a - b JINAK b := b - a gcd := a lcm := prod / gcd ZOBRAZ "Nejvetsi spolecny delitel", gcd ZOBRAZ "Nejmensi spolecny nasobek", lcm Je tento algoritmus efektivní? Pro 60 a 36. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 21/35

Algoritmy společný dělitel a násobek ČTI a, b prod := a * b DOKUD a <> b POKUD a > b a := a - b JINAK b := b - a gcd := a lcm := prod / gcd ZOBRAZ "Nejvetsi spolecny delitel", gcd ZOBRAZ "Nejmensi spolecny nasobek", lcm Je tento algoritmus efektivní? Pro 60 a 36. Pro 1001 a 1. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 21/35

Algoritmy společný dělitel a násobek ČTI a, b prod := a * b POKUD a < b tmp := a a := b b := tmp DOKUD b > 0 tmp := a mod b a := b b := tmp gcd := a lcm := prod / gcd ZOBRAZ "Nejvetsi spolecny delitel", gcd ZOBRAZ "Nejmensi spolecny nasobek", lcm L. Vagner, ČVUT FIT Algoritmy, BI-PA1 22/35

Algoritmy maximum v posloupnosti Úkol: zapsat algoritmus, který pro zadanou posloupnost n navzájem různých celých čísel najde maximum. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 23/35

Algoritmy maximum v posloupnosti ČTI n max := 0 DOKUD n > 0 ČTI x POKUD x > max max := x n := n - 1 ZOBRAZ "Maximum", max Je algoritmus správný? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 24/35

Algoritmy maximum v posloupnosti ČTI n max := 0 DOKUD n > 0 ČTI x POKUD x > max max := x n := n - 1 ZOBRAZ "Maximum", max Je algoritmus správný? Ne pro n = 3 a vstup: -1, -2, -3. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 24/35

Algoritmy maximum v posloupnosti ČTI n POKUD n <= 0 ZOBRAZ "Chyba..." ČTI max n := n - 1 DOKUD n > 0 ČTI x POKUD x > max max := x n := n - 1 ZOBRAZ "Maximum", max L. Vagner, ČVUT FIT Algoritmy, BI-PA1 25/35

Algoritmy druhé největší číslo Úkol: zapsat algoritmus, který pro zadanou posloupnost n navzájem různých celých čísel najde druhé největší číslo. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 26/35

Algoritmy druhé největší číslo ČTI n POKUD n < 2 ZOBRAZ "Chyba..." ČTI m1, m2 POKUD m1 < m2 tmp := m1 m1 := m2 m2 := tmp n := n - 2 DOKUD n > 0 ČTI x POKUD x > m1 m2 := m1 m1 := x n := n - 1 ZOBRAZ "Druhe maximum", m2 Je algoritmus správný? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 27/35

Algoritmy druhé největší číslo ČTI n POKUD n < 2 ZOBRAZ "Chyba..." ČTI m1, m2 POKUD m1 < m2 tmp := m1 m1 := m2 m2 := tmp n := n - 2 DOKUD n > 0 ČTI x POKUD x > m1 m2 := m1 m1 := x n := n - 1 ZOBRAZ "Druhe maximum", m2 Je algoritmus správný? Ne pro n = 3 a vstup: 1, 3, 2. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 27/35

Algoritmy druhé největší číslo ČTI n POKUD n < 2 ZOBRAZ "Chyba..." ČTI m1, m2 POKUD m1 < m2 tmp := m1 m1 := m2 m2 := tmp n := n - 2 Je algoritmus správný? DOKUD n > 0 ČTI x POKUD x > m1 m2 := m1 m1 := x JINAK POKUD x > m2 m2 := x n := n - 1 ZOBRAZ "Druhe maximum", m2 L. Vagner, ČVUT FIT Algoritmy, BI-PA1 28/35

Algoritmy druhé největší číslo ČTI n POKUD n < 2 ZOBRAZ "Chyba..." ČTI m1, m2 POKUD m1 < m2 tmp := m1 m1 := m2 m2 := tmp n := n - 2 Je algoritmus správný? Ano. DOKUD n > 0 ČTI x POKUD x > m1 m2 := m1 m1 := x JINAK POKUD x > m2 m2 := x n := n - 1 ZOBRAZ "Druhe maximum", m2 L. Vagner, ČVUT FIT Algoritmy, BI-PA1 28/35

Algoritmy faktorizace Úkol: zapsat algoritmus, který pro zadané přirozené číslo n určí jeho prvočíselný rozklad (faktorizaci). Např. pro n = 720 je faktorizace: 720 = 5 2 2 2 2 3 3 L. Vagner, ČVUT FIT Algoritmy, BI-PA1 29/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i < n POKUD n mod i = 0 ZOBRAZ i i := i + 1 Je algoritmus správně? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 30/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i < n POKUD n mod i = 0 ZOBRAZ i i := i + 1 Je algoritmus správně? Ne, zobrazí všechny dělitele, ne pouze prvočísla. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 30/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i < n POKUD n mod i = 0 POKUD isprime ( i ) ZOBRAZ i i := i + 1 Je algoritmus správně? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 31/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i < n POKUD n mod i = 0 POKUD isprime ( i ) ZOBRAZ i i := i + 1 Je algoritmus správně? Ne, zobrazí prvočíselné faktory, ale pouze jednou. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 31/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i <= n POKUD n mod i = 0 POKUD isprime ( i ) ZOBRAZ i n := n / i JINAK i := i + 1 Je algoritmus správně? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 32/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i <= n POKUD n mod i = 0 POKUD isprime ( i ) ZOBRAZ i n := n / i JINAK i := i + 1 Je algoritmus správně? Ano, pouze pro n = 1 nezobrazí nic. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 32/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i <= n POKUD n mod i = 0 POKUD isprime ( i ) ZOBRAZ i n := n / i JINAK i := i + 1 Je algoritmus správně? Ano, pouze pro n = 1 nezobrazí nic. Je velmi neefektivní. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 32/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i <= n POKUD n mod i = 0 ZOBRAZ i n := n / i JINAK i := i + 1 Je algoritmus správně? L. Vagner, ČVUT FIT Algoritmy, BI-PA1 33/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i <= n POKUD n mod i = 0 ZOBRAZ i n := n / i JINAK i := i + 1 Je algoritmus správně? Ano, pouze pro n = 1 nezobrazí nic. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 33/35

Algoritmy faktorizace ČTI n i := 2 DOKUD i <= n POKUD n mod i = 0 ZOBRAZ i n := n / i JINAK i := i + 1 Je algoritmus správně? Ano, pouze pro n = 1 nezobrazí nic. Je stále neefektivní. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 33/35

Algoritmy faktorizace ČTI n factorize ( n ) factorize ( n ): i := sqrt ( n ) DOKUD i >= 2 POKUD n mod i = 0 factorize ( i ) factorize ( n / i ) i := i - 1 ZOBRAZ n L. Vagner, ČVUT FIT Algoritmy, BI-PA1 34/35

Dotazy Dotazy... Děkuji za pozornost. L. Vagner, ČVUT FIT Algoritmy, BI-PA1 35/35