PROSTE RACHUNKI WYKONYWANE ZA POMOCĄ KOMPUTERA

Podobne dokumenty
RÓŻNORODNE ALGORYTMY OBLICZEŃ I ICH KOMPUTEROWE REALIZACJE

WYSZUKIWANIE I PORZĄDKOWANIE INFORMACJI

TECHNIKI ALGORYTMICZNE przybliżone i dokładne

PORZĄDEK WŚRÓD INFORMACJI

Algorytmy i struktury danych. Wykład 4

Wszechnica Poranna: Algorytmika i programowanie Proste rachunki wykonywane za pomocą komputera. Maciej M Sysło

ALGORYTMY POSZUKIWANIA I PORZĄDKOWANIA ELEMENTY JĘZYKA PROGRAMOWANIA

Luty 2001 Algorytmy (7) 2000/2001

Luty 2001 Algorytmy (1) 2000/2001 1

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wszechnica Informatyczna: Algorytmika i programowanie Różnorodne algorytmy obliczeń i ich komputerowe realizacje. Maciej M Sysło

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Algorytmy w teorii liczb

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Piotr Chrząstowski-Wachtel Uniwersytet Warszawski. Al Chwarizmi i trzy algorytmy Euklidesa

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

Luty 2001 Algorytmy (8) 2000/2001

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

Wybrane zagadnienia teorii liczb

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytmy. Programowanie Proceduralne 1

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

Wprowadzenie do algorytmiki

Wstęp do Informatyki

Definicje. Algorytm to:

Algorytmy. Programowanie Proceduralne 1

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

CZY WSZYSTKO MOŻNA POLICZYĆ NA KOMPUTERZE

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu

kształcenia pozaszkolnego WMiI Uni Wrocław, WMiI UMK Toruń

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Analiza algorytmów zadania podstawowe

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Algorytmika i pseudoprogramowanie

Zaawansowane algorytmy i struktury danych

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

1 Wprowadzenie do algorytmiki

2.8. Algorytmy, schematy, programy

Czy wszystko można policzyć na komputerze

Aktywizacja uczniów w ramach kształcenia pozaszkolnego. Maciej M. Sysło WMiI Uni Wrocław, WMiI UMK Toruń

WHILE (wyrażenie) instrukcja;

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Przykładowe zadania z teorii liczb

WHILE (wyrażenie) instrukcja;

Szczegółowy program kursów szkoły programowania Halpress

CZY WSZYSTKO MOŻNA POLICZYĆNA KOMPUTERZE

SCENARIUSZ LEKCJI. Dzielenie wielomianów z wykorzystaniem schematu Hornera

Komputery, obliczenia, algorytmy Tianhe-2 (MilkyWay-2), system Kylin Linux, Tflops, kw

Wstęp do Informatyki

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

EGZAMIN MATURALNY Z INFORMATYKI

Wstęp do informatyki

Technologie informacyjne - wykład 12 -

Informatyka A. Algorytmy

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. W dniu 21 lutego 2013 r. omawiamy test kwalifikacyjny.

Zadania do samodzielnego rozwiązania

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Zadanie 1. Potęgi (14 pkt)

Wielomiany. XX LO (wrzesień 2016) Matematyka elementarna Temat #2 1 / 1

Język programowania PASCAL

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

ALGORYTMY I STRUKTURY DANYCH

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Podstawy Programowania Algorytmy i programowanie

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Technologie Informatyczne Wykład VII

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Algorytm. a programowanie -

Największy wspólny dzielnik Algorytm Euklidesa (także rozszerzony) WZAiP1: Chińskie twierdzenie o resztach

Rekurencja (rekursja)

Algorytmy i schematy blokowe

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Matematyka dyskretna

6. Pętle while. Przykłady

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

Algorytmy, reprezentacja algorytmów.

5. Rekurencja. Przykłady

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Roman Mocek Zabrze Opracowanie zbiorcze ze źródeł Scholaris i CKE

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Programowanie w VB Proste algorytmy sortowania

Transkrypt:

PROSTE RACHUNKI WYKONYWANE ZA POMOCĄ KOMPUTERA WPROWADZENIE DO ALGORYTMIKI Maciej M. Sysło Uniwersytet Wrocławski Uniwersytet UMK w Toruniu syslo@ii.uni.wroc.pl informatyka + 2

Algorytm, algorytmika Algorytm opis rozwiązania krok po kroku postawionego problemu lub sposobu osiągnięcia jakiegoś celu Pierwszy algorytm algorytm Euklidesa 300 p.n.e algorytm od Muhammad ibn Musa al-chorezmi IX w. Algorytmika dziedzina zajmująca się algorytmami i ich własnościami informatyka + 3

Algorytmy a informatyka Informatyka jedna z definicji: dziedzina wiedzy i działalności zajmująca się algorytmami Czy zajmuje się też algorytmami kulinarnymi? Donald E. Knuth: Będziemy uczyć komputery, czyli programować je! Ralf Gomory (IBM): Mówi się często, że człowiek dotąd nie zrozumie czegoś, zanim nie nauczy tego kogoś innego. W rzeczywistości, człowiek nie zrozumie czegoś (algorytmu) naprawdę, zanim nie zdoła nauczyć tego komputera. Najlepszym sposobem przyspieszania komputerów jest obarczanie ich mniejszą liczbą działań (szybszymi algorytmami) informatyka + 4

Algorytmiczne rozwiązywanie problemu Dla problemu chcemy otrzymać rozwiązanie komputerowe, które jest: zrozumiałe dla każdego, kto zna problemu poprawne, czyli spełnia specyfikację (opis) problemu efektywne, czyli nie marnuje czasu i pamięci komputera Metoda rozwiązywania: analiza sytuacji problemowej sporządzenie specyfikacji: wykaz danych, wyników i relacji projekt rozwiązania komputerowa realizacja rozwiązania implementacja testowanie poprawności rozwiązania dokumentacja i prezentacja rozwiązania informatyka + 5

Rozwiązywanie problemów z pomocą komputerów Objaśnienie dwóch terminów: Problem: problem, gdy nie podano nam, jak należy go rozwiązać, ale wiemy wystarczająco, by poradzić sobie z nim a więc, problem jest dla każdego nie tylko dla orłów Programowanie: komputery wykonują tylko programy cokolwiek uruchamiamy na komputerze: Google, dokument w Word, arkusz w Excel, naciśnięcie klawisza jest programem każdy widoczny i niewidoczny efekt działania komputera to wynik działania jakiegoś programu Konkluzja: powinniśmy lepiej poznać programowanie komputerów informatyka + 6

Myślenie algorytmiczne Myślenie komputacyjne (ang. computational thinking) Reklama firmy IBM z 1924 roku Komputer to maszyna do myślenia!!! informatyka + 7

Problemy, algorytmy i ich komputerowe realizacje (implementacje) Plan: Obliczenia w komputerze czy komputer może wszystko policzyć? trasę dla Premiera kryptogram RSA Liczby dziesiętne, binarne, system pozycyjny, zamiana liczb między systemami Obliczanie wartości wielomianu Schemat Hornera Podnoszenie do potęgi szybko! Algorytm Euklidesa rekurencja, jako przedsmak informatyki informatyka + 8

Czy komputer może wszystko obliczyć, 1 Problem: Znajdź najkrótszą trasę dla Premiera przez wszystkie miasta wojewódzkie. Rozwiązanie: Premier zaczyna w Stolicy a inne miasta może odwiedzać w dowolnej kolejności. Tych możliwości jest: 15*14*13*12*11* *2*1 = 15! (15 silnia) W 1990 roku było: 48*47*46* *2*1 = 48! (48 silnia) Jak szybko można obliczyć 15!, a 48! Mając komputer, który wykonuje 10 15 (1 petaflops) operacji na sekundę (superkomputer)? 15! = 1307674368000/10 15 sek. = ok. 0.01 sek. 48! = 1,2413915592536072670862289047373*10 61 /10 15 = Ile to jest lat? 25! = 15511210043330985984000000/10 15 sek. = 15511210043 sek. = = 179528 dni = 491 lat informatyka + 9

Czy komputer może wszystko obliczyć, 2 Kryptografia: Szyfr RSA, jeden z najpopularniejszych obecnie, bazuje na podnoszeniu do dużej potęgi dużych liczb, np. 123456789098765432123456789098765432112345678998765 43211234567890 123456789098765432112345678909876543211234567890987654321 Jak można szybko obliczać takie potęgi? Demo: informatyka + 10

System dziesiętny, system pozycyjny Liczba dziesiętna: 357 ma wartość (dziesiętną): 357 = 3*100 + 5*10 + 7*1 = 3*10 2 + 5*10 1 + 7*10 0 a zatem liczba: d n-1 d n-2 d 1 d 0 która ma n cyfr ma wartość: d n-1 *10 n-1 + d n-2 *10 n-2 + + d 1 *10 1 + d 0 *10 0 10 podstawa systemu {0, 1, 2, 3,, 8, 9} cyfry 2, 8, 16 podstawy systemów używanych w komputerach podstawa cyfry 2 0, 1 system binarny 8 0, 1, 2, 3, 4, 5, 6, 7 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 60 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, informatyka + 11

System binarny Liczba binarna: 10101 = (10101) 2 ma wartość (dziesiętną): 1*2 4 + 0*2 3 + 1*2 2 + 0*2 1 + 1*2 0 = 2 4 + 2 2 + 1 = 16 + 4 + 1 = 21 a zatem liczba binarna: (b n-1 b n-2 b 1 b 0 ) 2 która ma n cyfr ma wartość: Binarne rozwinięcie liczby a Najbardziej znaczący bit a = b n-1 *2 n-1 + b n-2 *2 n-2 + + b 1 *2 1 + b 0 *2 0 (*) Jak szybko obliczać wartość dziesiętną binarnego rozwinięcia? We wzorze (*) zastępujemy 2 przez x i otrzymujemy: a = b n-1 *x n-1 + b n-2 *x n-2 + + b 1 *x 1 + b 0 *x 0 Jest to wielomian zmiennej x o współczynnikach 0 lub 1, czyli: Najmniej znaczący bit Pytanie: Jak szybko obliczać wartość wielomianu? informatyka + 12

Obliczanie wartości wielomianu Obliczanie wartości wielomianu jest bardzo ważną operacją w komputerze, bo wartość każdej funkcji jest liczona jako wartość wielomianu, np. cos x = 1 0.49670x 2 + 0.03705x 4. Wielomian stopnia 2: w(x) = ax 2 + bx + c = a*x*x + b*x + c w(x) = ax 2 + bx + c = (a*x + b)*x + c Wielomian stopnia 3: w(x) = ax 3 + bx 2 + cx + d = ((a*x + b)*x + c)*x + d 3 mnożenia 2 dodawania 2 mnożenia 2 dodawania 3 mnoż. 3 dod. Wielomian stopnia n: w n (x) = a 0 *x n + a 1 *x n-1 + + a n-1 *x + a n = = (a 0 *x n-1 + a 1 *x n-2 + + a n-1 )*x + a n = = = (( ((a 0 *x + a 1 )*x + a 2 )*x + + a n-2 )*x + a n-1 )*x + a n informatyka + 13

Obliczanie wartości wielomianu specyfikacja, algorytm Problem Wielomian Obliczanie wartości wielomianu Dane: n nieujemna liczba całkowita a 0, a 1, a 2,..., a n n + 1 współczynników wielomianu z wartość argumentu obliczamy w n (z). Wynik: w n (z) czyli wartość wielomianu w n (x) w punkcie x = z Algorytm do obliczania wartości wielomianu: w n (z) = (( ((a 0 *z + a 1 )*z + a 2 )*z + + a n-2 )*z + a n-1 )*z + a n Schemat Hornera: y := a 0 y := y*z + a 1 Specyfikacja problemu dokładny opis problemu n mnożeń i n dodawań Nie ma szybszego algorytmu!!! y := y*z + a 2.. y := y*z + a n-1 y := a 0 y := y*z + a i dla i = 1, 2,, n y := y*z + a n informatyka + 14

Schemat blokowy algorytmu Hornera i := 0; y := a 0 Początkowe wartości Instrukcja warunkowa: rozgałęzienia algorytmu Czy i = n Czyli, czy wyczerpano wszystkie współczynniki Instrukcja iteracyjna Tak Wyprowadź wartość y Koniec algorytmu Nie i := i + 1 y := y*z + a i Ada Augusta, córka Byrona, uznawana powszechnie za pierwszą programistkę komputerów, przełomowe znaczenie maszyny analitycznej Ch. Babbage a, pierwowzoru dzisiejszych komputerów, upatrywała właśnie w możliwości wielokrotnego wykonywania przez nią danego ciągu instrukcji, z liczbą powtórzeń z góry zadaną lub zależną od wyników obliczeń, a więc w iteracji. informatyka + 15

Pełny schemat blokowy algorytmu Hornera informatyka + 16

Algorytm Hornera w postaci programu (Pascal) program Horner; var i,n :integer; a,y,z :real; begin read(n); read(z); read(a); y:=a; for i:=1 to n do begin read(a); y:=y*z+a end; write(y) end. nazwa programu deklaracje, typy zmiennych blok programu początek czytaj n, czytaj z czytaj pierwszy współczynnik początkowa wartość wyniku pętla od 1 do n czytaj kolejny współczynnik powiększenie wyniku iteracja koniec pisz wynik blok programu koniec informatyka + 17

Warsztaty Algorytm, język programowania, komputer Proces komputerowej realizacji algorytmu: Opis algorytmu Zapis w języku programowania (Pascal, C++) Przetłumaczenie na język zrozumiały przez komputer Wykonanie Testowanie informatyka + 18

Algorytm Hornera współczynniki w tablicy (Pascal) Deklaracja tablicy Program Horner_tablica; var i,n :integer; y,z:real; a:array[0..100] of real {Co najwyzej 100 wspolczynnikow} begin read(n); for i:=0 to n do read(a[i]); writeln(' z y'); read(z); while z <> 0 do begin y:=a[0]; for i:=1 to n do y:=y*z+a[i]; write(' read(z) end end. ',y:2:5); writeln; Czytanie współczynników Instrukcja iteracyjna z warunkiem: Obliczanie wartości tego samego wielomianu tak długo, jak długo argument jest różny od zera, czyli z <> 0. informatyka + 19

Zastosowania Algorytmu Hornera 1. Obliczanie wartości wielomianów. 2. Obliczanie wartości dziesiętnej liczb danych w systemie o podstawie różnej od 10, np. liczb binarnych. Uwaga: jest to bardzo prosta metoda, np. dla obliczeń na kalkulatorze bez pamięci. 3. Szybkie potęgowanie (w dalszej części) informatyka + 20

Otrzymywanie postaci binarnej liczb Szkolna metoda: dzielimy przez dwa tak długo, jak długo iloraz jest większy od zera słupki: dzielenie iloraz reszta 187 2 93 1 93 2 46 1 46 2 23 0 23 2 11 1 11 2 5 1 5 2 2 1 2 2 1 0 1 2 0 1 Reprezentacja od końca reszt: 187 = (10111011) 2 Bardzo prosty program Program Rozwiniecie_binarne; var a:integer; begin read(a); while a <> 0 do begin write(a mod 2,' '); a:=a div 2 end end. Ciekawe pytanie: jaka jest długość rozwinięcia binarnego liczby n? informatyka + 21

Podnoszenie do potęgi, 1 Dane: m liczba naturalna, x liczba rzeczywista Wynik: y = x m Algorytmy: korzystają ze spostrzeżenia: jeśli m jest parzyste, to x m = (x m/2 ) 2 jeśli m jest nieparzyste, to x m = (x m 1 )x (m 1 staje się parzyste). Faktycznie, korzysta się z postaci binarnej wykładnika m. Przykład: m = 22 Sposób 1. Rozłóż m na sumę potęg liczby 2 mamy: 22 = 2 + 4 + 16 A stąd: x 22 = x 2+4+16 = x 2 *x 4 *x 16 Kolejne mnożenia: x 2, x 4 = (x 2 ) 2, x 8 = (x 4 ) 2, x 16 = (x 8 ) 2, y = x 2 *x 4 = x 6, y = y*x 16 6 mnożeń (kwadrat to jedno mnożenie) informatyka + 22

Podnoszenie do potęgi, 2 Znajdź rozwinięcie binarne liczby m; mamy: 22 = (10110) 2 Przedstaw wykładnik w postaci schematu Hornera; mamy: 22 = 1*2 4 + 0*2 3 + 1*2 2 + 1*2 1 + 0*2 0 = (((2 + 0)2 + 1)2 + 1)2 +0 Z postaci wykładnika określ kolejność mnożeń: x (((2+0)2+1)2+1)2+0 = x (((2+0)2+1)2+1)2 = (x (((2+0)2+1)2+1 ) 2 = (x (((2+0)2+1)2 x) 2 = = (x (((2+0)2+1 ) 2 x) 2 = (x (((2+0)2 x) 2 x) 2 = (x (((2+0 ) 2 x) 2 x) 2 = (((x 2 ) 2 x) 2 x) 2 = x 22 Kolejne mnożenia: x 2, x 4 = (x 2 ) 2, x 5 = (x 4 )x, x 10 = (x 5 ) 2, x 10 x = x 11, (x 11 ) 2 = x 22 Ten algorytm również wykonał 6 mnożeń, ale liczy inne iloczyny. Obie metody są bardzo efektywne i praktyczne wykonują co najwyżej dwa razy więcej mnożeń niż wynosi długość liczby w postaci binarnej informatyka + 23

Algorytm Euklidesa, 1 Uważany za pierwszy algorytm powstał 300 p.n.e. Chociaż Chińczycy i Hindusi wcześniej tworzyli przepisy obliczeniowe. Przez długie lata był synonimem algorytmu i od niego zaczynały wszystkie książki akademicki. Ma bardzo wiele zastosowań praktycznych i teoretycznych: arytmetyka, czyli obliczenia na liczbach całkowitych kryptografia RSA łamigłówki Przykład: Czy za pomocą naczyń 6 i 10 litrowych można napełnić pojemnik 15 litrami wody wodę można dolewać lub pobierać z pojemnika tylko całymi naczyniami. informatyka + 24

Algorytm Euklidesa, 2 Problem NWD(m,n) Największy Wspólny Dzielnik Dane: m, n liczby naturalne (można przyjąć, że m n) Wynik: NWD(m,n) Największy wspólny dzielnik liczb m i n. Przykłady: NWD(42,14) = 14 NWD(24,16) = 8 NWD(13,21) = 1 NWD(0,31) = 31 13 i 21 są względnie pierwsze 0 jest podzielne przez każdą liczbę Zasada, wykorzystana w algorytmie Twierdzenie o ilorazie i reszcie n = q*m + r, gdzie 0 r < m q iloraz, r reszta. informatyka + 25

Algorytm Euklidesa, 3 Wnioski: 1. Jeśli r = 0, to m dzieli n, czyli NWD(m,n) = m 2. Jeśli r 0, to mamy r = n qm, czyli każda liczba, która dzieli n oraz m dzieli również r, w szczególności największa taka liczba. Stąd mamy: NWD(m,n) = NWD(r,m) Przykład: NWD(25,70) = NWD(20,25) = NWD(5,20) = NWD(0,5) = 5 NWD(25,70): 70 = 2*25 + 20 NWD(20,25) 25 = 1*20 + 5 NWD(5,20) 20 = 4*5 + 0 r = 0, więc NWD(, ) = 5 Generowane liczby maleją: 70, 25, 20, 5, 0 więc algorytm jest skończony informatyka + 26

Algorytm Euklidesa, 4 dwie realizacje program Euklides; var m,n,r:integer; begin read(m,n); while m>0 do begin r:=n mod m; n:=m; m:=r end; write(n) end. Realizacja z funkcją: program Euklides_funkcja; var m,n:integer; function NWD(m,n:integer):integer; var r:integer; begin while m>0 do begin r:=n mod m; n:=m; m:=r Funkcja end; NWD:=n end; begin read(m,n); writeln(nwd(m,n)) end. Wywołanie funkcja informatyka + 27

Algorytm Euklidesa, 5 realizacja rekurencyjna program Euklides_rekurencja; var m,n:integer; Funkcja rekurencyjna function NWD_rek(m,n:integer):integer; begin if m>n then NWD_rek:=NWD_rek(n,m) else if m = 0 then NWD_rek:=n else NWD_rek:=NWD_rek(n mod m,m) end; begin read(m,n); writeln(nwd_rek(m,n)) End. Wywołania rekurencyjne informatyka + 28

Algorytm Euklidesa, 6 zagadki Przykład 1. Czy za pomocą naczyń 6 i 10 litrowych można napełnić pojemnik 15 litrami wody wodę można dolewać lub pobierać z pojemnika tylko całymi naczyniami. Jeśli istnieje rozwiązanie, to istnieją takie x i y, że 6x + 10y = 15 Czy istnieją? Uzasadnij odpowiedź. Rozwiązanie 1. W tym przypadku nie istnieje rozwiązanie. Istnieje, gdy prawa strona jest wielokrotnością NWD(6,10). Przykład 2. W jednym pojemniku są klocki o wysokości p, a w drugim o wysokości q. Czy zawsze można zbudować wieże z każdego rodzaju klocków, które mają tę samą wysokość? Jeśli jest to możliwe, to jaka jest najmniejsza wysokość takich wież? Rozwiązanie 2. Zawsze możliwe. Najmniejsza wysokość NWW(p,q). Pytanie 3. Jaki zachodzi związek między NWD(m,n) i NWW(m,n)? Mamy NWW(m,n) = (m*n)/nwd(m,n) informatyka + 29

Pokrewne zajęcia w Projekcie Informatyka + Wykład+Warsztaty (Wszechnica Poranna): Wprowadzenie do algorytmiki i programowania wyszukiwanie i porządkowanie informacji Proste rachunki wykonywane za pomocą komputera. Techniki algorytmiczne przybliżone (heurystyczne) i dokładne. Wykłady (Wszechnica Popołudniowa): Czy wszystko można policzyć na komputerze? Porządek wśród informacji kluczem do szybkiego wyszukiwania. Dlaczego możemy się czuć bezpieczni w sieci, czyli o szyfrowaniu informacji. Znajdowanie najkrótszych dróg, najniższych drzew, najlepszych małżeństw informatyka + 30

Pokrewne zajęcia w Projekcie Informatyka + Kursy (24 godz.) Wszechnica na Kołach: Algorytmy poszukiwania i porządkowania. Elementy języka programowania Różnorodne algorytmy obliczeń i ich komputerowe realizacje Grafy, algorytmy grafowe i ich komputerowe realizacje Kursy (24 godz.) Kuźnia Informatycznych Talentów KIT dla Orłów: Przegląd podstawowych algorytmów Struktury danych i ich wykorzystanie Zaawansowane algorytmy Tendencje Wykłady Algorytmy w Internecie, K. Diks Czy P = NP, czyli jak wygrać milion dolarów w Sudoku, J. Grytczuk Między przeszłością a przyszłość informatyki, M.M Sysło informatyka + 31