030 STOSOWANIE ALGORYTMU EUKLIDESA ALGORYTM EUKLIDESA 1 PSTP

  • Slides: 16
Download presentation
030 - STOSOWANIE ALGORYTMU EUKLIDESA ALGORYTM EUKLIDESA 1 PS/TP

030 - STOSOWANIE ALGORYTMU EUKLIDESA ALGORYTM EUKLIDESA 1 PS/TP

ALGORYTM EUKLIDESA Biografia Euklides ur. 365 r. pne (Ateny) zm. 300 r. pne O

ALGORYTM EUKLIDESA Biografia Euklides ur. 365 r. pne (Ateny) zm. 300 r. pne O Euklidesie nie wiemy prawie nic. Nie wiadomo skąd pochodził, gdzie i u kogo się uczył. 2 PS/TP

ALGORYTM EUKLIDESA Mimo to nie mamy podstaw do wątpienia o istnieniu Euklidesa, tym bardziej,

ALGORYTM EUKLIDESA Mimo to nie mamy podstaw do wątpienia o istnieniu Euklidesa, tym bardziej, że nie mieli takich wątpliwości późniejsi uczeni greccy, którzy coś niecoś opowiedzieli o jego charakterze. Pappus powiada, że był on bardzo życzliwy dla wszystkich tych, którzy cokolwiek zdziałali w zakresie matematyki, stateczny, w najwyższym stopniu uczciwy i zupełnie pozbawiony pychy. Wielką pryncypialność Euklidesa podkreślają też dwie następujące o nim anegdoty. Gdy król Ptolemeusz I zapytał Euklidesa, czy nie ma krótszej drogi do poznania geometrii niż studiowanie Elementów, Euklides odważnie na to odpowiedział, że "w geometrii nie ma drogi królewskiej". Druga historyczna anegdota opowiada o tym, że jeden z młodzieńców, poznawszy pierwsze twierdzenie Elementów, zapytał Euklidesa: "A ile mogę zarobić, jeśli nauczę się tego wszystkiego? " Na to Euklides zawołał niewolnika i powiedział: "Daj mu trzy obole, gdyż biedak chce zarobić pieniądze swoją nauką". Znacznie więcej wiemy o twórczości matematycznej Euklidesa. Przede wszystkim Euklides jest dla nas autorem Elementów, z których uczyli się matematycy całego świata. 3 PS/TP

Historia • Algorytm Euklidesa uważany jest za pierwszy znany algorytm. Jak wskazuje nazwa, został

Historia • Algorytm Euklidesa uważany jest za pierwszy znany algorytm. Jak wskazuje nazwa, został on zaprezentowany przez Euklidesa, żyjącego w w latach około 365 - 300 r. p. n. e. greckiego matematyka, w jego podstawowym dziele pt. Elementy. • Mimo że algorytm ten jest uznawany jako pierwszy, na terenach obecnych Chin i Indii znano i stosowano inne sposoby na wykonywanie pewnych obliczeń wcześniej. 4 PS/TP

Historia • Zadaniem algorytmu Euklidesa jest wyznaczenie największego wspólnego dzielnika (NWD) dwóch liczb naturalnych.

Historia • Zadaniem algorytmu Euklidesa jest wyznaczenie największego wspólnego dzielnika (NWD) dwóch liczb naturalnych. • Operacja taka oprócz zastosowania na lekcjach matematyki może przydać się także na przykład wtedy, gdy chcesz podzielić na jak najmniejsze porcje, załóżmy, 36 truskawek i 15 jabłek. Przy zastosowaniu algorytmu możemy wyliczyć, iż NWD tych liczb to. . . • Zresztą, spróbuj to sam obliczyć!!!! 5 PS/TP

ALGORYTM EUKLIDESA 6 PS/TP

ALGORYTM EUKLIDESA 6 PS/TP

ALGORYTM EUKLIDESA Algorytm Euklidesa (metoda kolejnych dzieleń) to algorytm znajdowania największego wspólnego dzielnika (NWD)

ALGORYTM EUKLIDESA Algorytm Euklidesa (metoda kolejnych dzieleń) to algorytm znajdowania największego wspólnego dzielnika (NWD) dwóch różnych liczb naturalnych. Nie wymaga rozkładania liczb na czynniki pierwsze. CIEKAWOSTKA: Co ciekawe algorytmu nie wymyślił Euklides, a Eudoksos z Knidos (IV wiek p. n. e. ). Euklides jedynie algorytm ten zawarł w swoim dziele Elementy. Przebieg algorytmu Euklidesa obliczania NWD liczb a i b (gdzie a>b): oblicz c jako resztę z dzielenia a przez b zastąp a przez b, zaś b przez c jeżeli b = 0, to szukane NWD = a, w przeciwnym wypadku przejdź do 1 7 PS/TP

ALGORYTM EUKLIDESA Program w Pascalu: program EUKLIDES; {Algorytm Euklidesa} uses Crt; FUNCTION NWD(a, b

ALGORYTM EUKLIDESA Program w Pascalu: program EUKLIDES; {Algorytm Euklidesa} uses Crt; FUNCTION NWD(a, b : LONGINT) : LONGINT; VAR c: LONGINT; BEGIN WHILE ( b <> 0 ) DO BEGIN c : = a mod b; a : = b; b : = c; END; NWD : = a; END; VAR x, y, dzielnik : LONGINT; 8 PS/TP

ALGORYTM EUKLIDESA BEGIN clrscr; writeln('Podaj dwie liczby calkowite x > y: '); write('x='); readln(x);

ALGORYTM EUKLIDESA BEGIN clrscr; writeln('Podaj dwie liczby calkowite x > y: '); write('x='); readln(x); write('y='); readln(y); if (x<=y) then writeln('pierwsza liczba musi byc wieksza od drugiej') else begin dzielnik : = NWD(x, y); writeln('NWD(', x, ', ', y, ')=', dzielnik); end; readkey; END. 9 PS/TP

ALGORYTM EUKLIDESA Algorytm rekurencyjny: 10 PS/TP

ALGORYTM EUKLIDESA Algorytm rekurencyjny: 10 PS/TP

ALGORYTM EUKLIDESA Program w Pascalu – metoda rekurencyjna: program EUKLIDES_REKURENCYJNY; {Algorytm Euklidesa - REKURENCYJNY}

ALGORYTM EUKLIDESA Program w Pascalu – metoda rekurencyjna: program EUKLIDES_REKURENCYJNY; {Algorytm Euklidesa - REKURENCYJNY} uses Crt; FUNCTION NWD(a, b : LONGINT) : LONGINT; VAR c: LONGINT; BEGIN IF ( b = 0 ) THEN NWD : = a ELSE NWD : = NWD(b, a mod b); END; VAR x, y, dzielnik : LONGINT; 11 PS/TP

ALGORYTM EUKLIDESA BEGIN clrscr; writeln('Podaj dwie liczby calkowite x > y: '); write('x='); readln(x);

ALGORYTM EUKLIDESA BEGIN clrscr; writeln('Podaj dwie liczby calkowite x > y: '); write('x='); readln(x); write('y='); readln(y); if (x<=y) then writeln('pierwsza liczba musi byc wieksza od drugiej') else begin dzielnik : = NWD(x, y); writeln('NWD(', x, ', ', y, ')=', dzielnik); end; readkey; END. 12 PS/TP

ALGORYTM EUKLIDESA Program w C++: #include <stdio. h> int main(int argc, _TCHAR* argv[]) {

ALGORYTM EUKLIDESA Program w C++: #include <stdio. h> int main(int argc, _TCHAR* argv[]) { int a, b; printf("Podaj a. n"); scanf("%d", &a); printf("Podaj b. n"); scanf("%d", &b); while (a != b){ if (a > b) a -= b; else b -= a; } printf("Najwiekszy wspolny dzielnik (NWD) to: %d", a); return 0; } 13 PS/TP

ALGORYTM EUKLIDESA Program w Ada: with Text_IO; use Text_IO; procedure Euklides is a, b,

ALGORYTM EUKLIDESA Program w Ada: with Text_IO; use Text_IO; procedure Euklides is a, b, nwd_a, nwd_b: Integer; begin a : = 153; b : = 1326; nwd_a : = a; nwd_b : = b; while (nwd_a /= nwd_b) loop if (nwd_a > nwd_b) then nwd_a : = nwd_a - nwd_b; else nwd_b : = nwd_b - nwd_a; end if; end loop; Put_Line("Największy wspólny dzielnik (NWD) " & Integer'Image(a) & " oraz " & Integer'Image(b) & " to: " & Integer'Image(nwd_b)); end; 14 PS/TP

ALGORYTM EUKLIDESA Program w Java: public class Euklides { public static void main(String[ ]

ALGORYTM EUKLIDESA Program w Java: public class Euklides { public static void main(String[ ] args) { int a, b; System. out. println("Podaj a. "); a = Console. read. Int("? "); System. out. println("Podaj b. "); b = Console. read. Int("? "); while (a != b) { if (a > b) a -= b; else b -= a; } System. out. println("Największy wspólny dzielnik (NWD) to: "+a); } } 15 PS/TP

ALGORYTM EUKLIDESA Źródła: http: //www. matematyka. org/ http: //www. algorytm. org/ http: //pl. wikipedia.

ALGORYTM EUKLIDESA Źródła: http: //www. matematyka. org/ http: //www. algorytm. org/ http: //pl. wikipedia. org/wiki/Algorytm_Euklidesa http: //www. lo. stary-sacz. iap. pl/text/piotr/algorytmy/euklides. html http: //ithelpdesk. pl/najwiekszy-wspolny-dzielnik-algorytm-euklidesanwd. html 16 PS/TP