Luty 2001 Algorytmy (8) 2000/2001

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

Algorytmy i struktury danych. Wykład 4

Zadania do samodzielnego rozwiązania

Przykładowe zadania z teorii liczb

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

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

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

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

Liczby rzeczywiste. Działania w zbiorze liczb rzeczywistych. Robert Malenkowski 1

Wybrane zagadnienia teorii liczb

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

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

Teoria liczb. Zajmuje się własnościami liczb, wszystkim całkowitych

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Liczby. Wymagania programowe kl. VII. Dział

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA VII

Metody numeryczne I Równania nieliniowe

Luty 2001 Algorytmy (7) 2000/2001

1. Wykład NWD, NWW i algorytm Euklidesa.

Wymagania edukacyjne z matematyki w klasie VII szkoły podstawowej

WYMAGANIA NA POSZCZEGÓLNE OCENY MATEMATYKA KL.VII

Matematyka dyskretna

WYMAGANIA EDUKACYJNE Z MATEMATYKI dla klasy I ba Rok szk. 2012/2013

1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia

Matematyka z kluczem. Szkoła podstawowa nr 18 w Sosnowcu. Przedmiotowe zasady oceniania klasa 7

MATeMAtyka 1. Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony Klasa pierwsza

Technikum Nr 2 im. gen. Mieczysława Smorawińskiego w Zespole Szkół Ekonomicznych w Kaliszu

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

Matematyka Dyskretna Zestaw 2

Przypomnienie wiadomości dla trzecioklasisty C z y p a m i ę t a s z?

Klasa 1 technikum. Poniżej przedstawiony został podział wymagań na poszczególne oceny szkolne:

Wymagania edukacyjne z matematyki na poszczególne do klasy VII szkoły podstawowej na rok szkolny 2018/2019

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.

Wymagania na egzamin poprawkowy z matematyki z zakresu klasy pierwszej TECHNIKUM

Powtórzenie podstawowych zagadnień. związanych ze sprawnością rachunkową *

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

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

Wymagania edukacyjne z matematyki

Zestaw zadań dotyczących liczb całkowitych

Sumy kwadratów kolejnych liczb naturalnych

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

WYMAGANIA EDUKACYJNE - matematyka - poziom rozszerzony Dariusz Drabczyk

Wymagania edukacyjne niezbędne do uzyskania rocznych ocen klasyfikacyjnych z matematyki w klasie VII.

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13

MATEMATYKA WYMAGANIA EDUKACYJNE DLA KLASY V

LICZBY PIERWSZE. 14 marzec Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F.

Technikum Nr 2 im. gen. Mieczysława Smorawińskiego w Zespole Szkół Ekonomicznych w Kaliszu

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

LISTA 1 ZADANIE 1 a) 41 x =5 podnosimy obustronnie do kwadratu i otrzymujemy: 41 x =5 x 5 x przechodzimy na system dziesiętny: 4x 1 1=25 4x =24

Wymagania edukacyjne matematyka klasa 1 zakres podstawowy 1. LICZBY RZECZYWISTE

Algorytmy w teorii liczb

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. (c.d.

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

Jarosław Wróblewski Matematyka Elementarna, zima 2015/16

Kształcenie w zakresie podstawowym. Klasa 1

Wymagania edukacyjne z matematyki dla klasy 7 na podstawie planu wynikowego z rozkładem materiału

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY Z MATEMATYKI DLA UCZNIÓW KLAS IV-VI

LISTA 5. C++ PETLE for, while, do while

Metody rozwiązywania równań nieliniowych

1. Równania i nierówności liniowe

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VII

Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów

Arytmetyka. Działania na liczbach, potęga, pierwiastek, logarytm

11. Liczby rzeczywiste

WHILE (wyrażenie) instrukcja;

WYMAGANIA EDUKACYJNE KLASA I Pogrubieniem oznaczono wymagania, które wykraczają poza podstawę programową dla zakresu podstawowego.

WHILE (wyrażenie) instrukcja;

Kryteria ocen z matematyki w klasie IV

Matematyka z kluczem. Plan wynikowy z rozkładem materiału Klasa 7

Matematyka z kluczem. Plan wynikowy z rozkładem materiału Klasa 7

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. Czwartek 28 marca zaczynamy od omówienia zadań z kolokwium nr 1.

PRZEDMIOTOWY SYSTEM OCENIANIA Z MATEMATYKI DLA KLASY 1LO i 1TI ROK SZKOLNY 2018/2019

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

WYMAGANIA NA POSZCZEGÓLNE OCENY Z MATEMATYKI DLA KL. 5

2) R stosuje w obliczeniach wzór na logarytm potęgi oraz wzór na zamianę podstawy logarytmu.

Jarosław Wróblewski Matematyka Elementarna, zima 2013/14. Czwartek 21 listopada zaczynamy od omówienia zadań z kolokwium nr 2.

Jarosław Wróblewski Matematyka Elementarna, lato 2014/15

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY VII SZKOŁY PODSTAWOWEJ

Wykłady z dydaktyki matematyki (klasy IV-VIII) III rok matematyki semestr zimowy 2017/2018 ćwiczenia i wykład nr 6

MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY DLA KLASY PIERWSZEJ

Matematyka dyskretna

Matematyka klasa 7 Wymagania edukacyjne na ocenę śródroczną.

I semestr WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA VI. Wymagania na ocenę dopuszczającą. Dział programu: Liczby naturalne

Indukcja matematyczna. Zasada minimum. Zastosowania.

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA POSZCZEGÓLNYCH OCEN Z MATEMATYKI W KLASIE VI

MATEMATYKA Z KLUCZEM WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY SIÓDMEJ

Metody numeryczne w przykładach

Zadanie 9. ( 5 pkt. ) Niech r i R oznaczają odpowiednio długości promieni okręgów wpisanego i opisanego na ośmiokącie foremnym.

VII Olimpiada Matematyczna Gimnazjalistów

Program przedmiotowo- wychowawczy z matematyki w kl.v

Dwa równania kwadratowe z częścią całkowitą

Bukiety matematyczne dla gimnazjum

Wymagania dla klasy siódmej. Treści na 2 na 3 na 4 na 5 na 6 Uczeń: Uczeń: Uczeń: Uczeń: Uczeń: DZIAŁ 1. LICZBY

7. CIĄGI. WYKŁAD 5. Przykłady :

ROZKŁAD MATERIAŁU NAUCZANIA KLASA 1, ZAKRES PODSTAWOWY

Matematyka dyskretna. Andrzej Łachwa, UJ, A/15

MATeMAtyka cz.1. Zakres podstawowy

Transkrypt:

Algorytm Euklidesa Danymi są dwie nieujemne liczby całkowite m i n. Liczba k jest największym wspólnym dzielnikiem m i n, jeśli dzieli m oraz n i jest największą liczbą o tej własności - oznaczamy ją przez NWD(m, n). Algorytm Euklidesa znajduje największy wspólny dzielnik dwóch liczb. Jest to jeden z algorytmów najczęściej przytaczanych w książkach informatycznych i matematycznych. Powodem tego jest nie tylko szacunek dla jego ''wieku'', ale to, że: ma wiele zastosowań w rozwiązywaniu problemów rachunkowych można na jego przykładzie zilustrować wiele podstawowych pojęć iwłasności informatycznych (algorytm rekurencyjny i dowodzenie poprawności algorytmów) Algorytm ten Euklidesa zamieścił w swoim wiekopomnym dziele Elementy. Było to około 300 roku p.n.e., a więc na długo przed pojawieniem się określenia algorytm. Przypuszcza się, że ten algorytm był znany jeszcze wcześniej. Wiele innych przepisów rachunkowych stosowano już w Babilonie blisko 1800 roku p.n.e. Jednak nie nadaje się im takiego znaczenia, jak algorytmowi Euklidesa, gdyż nie zawierają w sobie iteracji i wiele z nich zostało wypartych przez współczesne metody. 1

Załóżmy, że n > m. Gdy podzielimy n przez m, otrzymamy równość n = qm + r, gdzie 0 < r <m Wielkości q i r są odpowiednio ilorazem i resztą z dzielenia n przez m. Jeśli r = 0, to NWD (m,n) = m, czyli jeśli jedna z liczb dzieli drugą bez reszty, to mniejsza z tych liczb jest ich największym wspólnym dzielnikiem. Jeśli r = 0, to równość można zapisać w postaci r = n - qm; stąd wynika,że każda liczba dzieląca n i m dzieli całe wyrażenie po prawej stronie tej równości, a więc dzieli również r; zatem, największy wspólny dzielnik m i n dzieli również resztę r. Te dwa wnioski można zapisać w postaci następującej równości: NWD(m,n) = NWD(r,m) w której przyjęliśmy, że NWD(0,m) = m, gdyż 0 jest podzielne przez każdą liczbę różną od zera. Ponieważ r<m pierwszy element w parze argumentów w funkcji NWD maleje. Ponieważ w obliczeniach występują jedynie liczby naturalne ten malejący ciąg reszt musi być skończony (ostatecznie reszta jest równa zeru). 48=1*46+2 46=23*2+0 NWD(46,48)=NWD(2,46)=2 2

W algorytmie Euklidesa generujemy pary liczb o tym samym największym wspólnym dzielniku, elementy tych par tworzą malejący ciąg liczb naturalnych, a więc ten ciąg jest skończony i na jego końcu otrzymujemy szukany dzielnik. UWAGA: iloraz q nie występuje w kolejnych iteracjach, nie trzeba go zatem wyznaczać. Algorytm Euklidesa z dzieleniem wyznaczania NWD Dane: Dwie liczby naturalne m i n. Wynik: NWD(m i n) - największy wspólny dzielnik m i n. Krok 1. Jeśli m = 0, to n jest szukanym dzielnikiem. Zakończ algorytm. Krok 2. r:=n mod m, n:= r. Wróć do kroku 1. Resztę r w kroku 2 można znaleźć przez kolejne odejmowanie m od n, co jest źródłem dość popularnej realizacji algorytmu Euklidesa z odejmowaniem. Porównajmy obie wersie algorytmu na parze danych 48 i 46. Pierwszy z algorytmów kończy on działanie po dwóch iteracjach kroku 2. Jeśli zastosujemy odejmowanie zamiast obliczenia wartości funkcji mod, w pierszym kroku - wynik 48 mod 46 otrzymamy po wykonaniu jednego odejmowania 46 od 48; Natomiast w drugiej iteracji kroku 2, wynik 46 mod 2 otrzymamy po wykonaniu dwudziestu trzech odejmowań. 3

Przelewanie wody Dysponując dwoma czerpakami o pojemności m=4 i n=6 litrów, pustym pojemnikiem o nieograniczonej pojemności i nieograniczoną ilością wody napełnij pojemnik k=14 litrami wody przy założeniu, że wodę można wlewać lub wylewać z pojemnika tylko pełnymi czerpakami. Oznaczmy przez x i y liczby ruchów czerpaków - przez ruch rozumiemy różnicę wlań i wylań. Aby zadanie miało rozwiązanie musi być: mx + ny = k Równanie to dla danych m, n i k ma rozwiązanie x i y gdy k jest równe NWD(m,n) - k może być również wielokrotnością NWD(m,n). Aby to zadanie rozwiązać należy zastosować algorytm Euklidesa niejako od tyłu. Prowadzi to do tzw. rozszerzonej wersji algorytmu Euklidesa. Przedstawiane równanie jest szczególnym przypadkiem równania diofantycznego, w którym współczynniki są liczbami całkowitymi i rozwiązanie również składa się z liczb całkowitych. 4

Operacje na ułamkach zwykłych Obliczanie największego wspólnego dzielnika dwóch liczb (NWD) ma zastosowanie w obliczeniach, w których posługujemy się ułamkami zwykłymi. Liczbę mającą postać p/q nazywamy ułamkiem zwykłym, gdy p i q są liczbami względnie pierwszymi, tj. gdy ułamka nie można skrócić. Jeśli ułamek nie jest zwykły, np. 12/16, to aby sprowadzić go do postaci zwykłej, należy licznik i mianownik podzielić przez ich największy wspólny dzielnik. Aby wynik działań na ułamkach zwykłych był również ułamkiem zwykłym, należy skrócić ułamki będące wynikami. występujące po prawej stronie tych tożsamości, gdy jest to możliwe. W obliczeniach komputerowych skracanie nie powinno być odkładane na koniec obliczeń, by w obliczeniach nie pojawiały się niepotrzebne zbyt duże liczby gdyż zakres liczb całkowitych jest niewielki. 5

Najmniejszą wspólną wielokrotnością liczb naturalnych m i n jest najmniejsza liczba naturalna, która dzieli sie przez m i n - oznaczamy ją przez NWW(m,n). Prawdziwy jest wzór: NWW(m,n) NWD(m,n)=mn NWD(m,n) występuje w iloczynie mn dwukrotnie: raz w m, raz w n. Ponieważ wielkość NWD(m,n) może być duża NWW wyznaczamy z: NWW(m,n)=m n/nwd(m,n) Algorytm wyznaczania NWW Dane: Dwie liczby naturalne m i n, m<=n. Wynik: NWW(m,n) - najmniejsza wspólna wielokrotność m i n. Krok 1: Oblicz NWD(m,n) {Zastosuj algorytm Euklidesa} Krok 2: NWW(m,n) jest równa m(n div NWD(m,n)) 6

Liczba naturalna jest pierwsza, jeśli dzieli się tylko przez 1 i przez siebie. Jest wiele słuszności w powiedzeniu, że wśród liczb naturalnych, liczby pierwsze odgrywają rolę podobną do roli pierwiastków w chemii. Liczbę naturalną, która nie jest pierwszą, nazywa się liczbą złożoną. Liczba złożona ma więc dzielniki, które są różne od 1 i od niej samej. Czynnikiem liczby złożonej jest jej dzielnik, który jest liczbą pierwszą. Rozkładem liczby na czynniki (pierwsze) lub jej faktoryzacją nazywamy przedstawienie liczby w postaci iloczynu jej czynników pierwszych z uwzględnieniem ich krotności. Matematycy od dawna starali się podać wzór na liczby pierwsze. Pierre de Frmat (1601-1655) twierdził, że dla każdego k, liczba 2 2^k +1 jest liczbą pierwszą. Niestety mylił się dla k=5 nie jest to liczba pierwsza. Najczęściej stosowanym wzorem na liczby pierwsze jest 2 p -1, gdzie p jest liczbą pierwszą. Na przykład dla p= 2, 3, 5, 7, 17, 31, 89 liczby tej postaci są pierwsze. Ten wzór zasugerował ojciec Marin Meersenne (1588-1648) w korespondencji z P. Fermatem i liczba pierwsza o tej postaci nazywa się liczbą Mersenne'a. 7

Najczęściej są rozważane następujące dwa problemy związane z liczbami pierwszymi: Sprawdzić czy dana liczba n jest liczbą pierwszą; jeśli nie jest, to podać jej rozkład na czynniki. Znaleźć wszystkie liczby pierwsze w wybranym przedziale liczb lub znaleźć dużą liczbę pierwszą. Liczby pierwsze są obecnie wykorzystywane w kryptografii do kodowania wiadomości przesyłanych w sieciach komputerowych. Euklidesa (80 rok p.n.e.) już jednak ciekawiło, czy takich liczb jest dużo, i udowodnił następujące twierdzenie, z którego wynika, że liczb pierwszych jest nieskończenie wiele: Liczb pierwszych jest więcej niż jest ich w jakimkolwiek skończonym zbiorze złożonym z liczb pierwszych. Największa znana liczba pierwsza została znaleziona w listopadzie 1996 roku. Jest ona liczbą Mersenne'a dla p = 1398269. Zawiera 420921 cyfr, a sprawdzenie, że jest to rzeczywiście liczba pierwsza, trwało 88 godzin pracy komputera IBM PC z procesorem 90 MHz Pentium. 8

Rozkład liczby na czynniki pierwsze Dla danej liczby naturalnej n szukamy następującego jej przedstawienia n=p 1 p 2 p 3 p l p 1 <=p 2 <= p l Oczywista metoda znajdywania czynników pi polega na dzieleniu n przez kolejne liczby pierwsze p=2, 3, 5, 7, 11. Jeżeli natrafimy na p takie, że n mod p = 0, czyli liczba n jest podzielna przez p, to p jest najmniejszym dzielnikiem n. Postępowanie to powtarzamy dla liczby n równej n/p i dla każdych liczb pierwszych, począwszy od p -gdyż p wielokrotnie wystąpić w rozkładzie. Jeżeli w jakimkolwiek momencie sprawdzania podzielność dla kolejnego p okaże się, że liczba n nie jest podzielna przez p i część całkowita ilorazu n/p nie jest większa niż p, to możemy przerwać obliczenia i stwierdzić, że bieżąca liczba n jest liczbą pierwszą. Jeżeli n nie jest liczbą pierwszą, to ma czynnik p spełniający warunek p<sqrt(n). Ponadto, każda liczba złożona ma w swoim rozkładzie na czynniki co najwyżej jeden czynnik większy niż Sqrt(n). 9

Sito Eratostenesa Najprostszym sposobem otrzymania wszystkich liczb pierwszych mniejszych od danej liczby N jest usunięcie liczb złożonych ze zbioru wszystkich liczb mniejszych od N. By wykonać to systematycznie usuwamy najpierw liczby podzielne przez 2, później przez 3, następnie przez 5 aż do osiągnięcia liczby pierwszej p, która spełnia nierówność p 2 >N. Metodę tę nazywa się sitem, gdyż efekt wykreślania liczb podzielnych przez wybraną liczbę pierwszą można interpretować jako nastawienie oczek sita na takie tylko liczby. W algorytmie zredukujemy niektóre działania opierając się na następujących spostrzeżeniach: wystarczy rozpatrywać jedynie liczby nieparzyste, gdyż parzyste zostaną przesiane w pierwszym kroku przez oczka nastawione na 2, jeśli p jest kolejną liczbą pierwszą, której mamy użyć do odsiania liczb złożonych podzielnych przez p to wystarczy wyeliminować liczby postaci: p 2, p(p+2), p(p+4) kolejnym uproszczeniem jest wykonywanie w algorytmie jedynie dodawań w miejsce mnożeń - kolejna eliminowana liczba jest o 2p większa od poprzedniej. 10

Obliczanie wartości pierwiastka kwadratowego Zadanie, w którego rozwiązaniu liczba iteracji wykonywanych przez algorytm dla konkretnych danych zależy od wartości parametru zaliczamy do działu algorytmiki nazywanego analizą numeryczną. Wartość pierwiastka kwadratowego z liczby a można wyznaczyć również za pomocą metody iteracyjnej, w której rozpoczynając obliczenia od wybranego rozwiązania początkowego (przybliżenia szukanej wartości pierwiastka) budujemy ciąg o wartościach zbliżających się do dokładnej wartości. Interpretacja geometryczna: przypuśćmy, że znamy pole kwadratu a i chcemy znaleźć długość jego boku. Jako wartość przybliżoną pierwiastka możemy wybrać x, ale wtedy, aby pole kwadratu nie uległo zmianie drugi bok musi być równy a/x. O tym, jak dobrze wybraliśmy przybliżenie świadczy różnica między długościami boków prostokąta (różnica x i a/x. Jeśli wielkości te nie są sobie równe szukana wartość pierwiastka leży między nimi a za kolejne przybliżenie możemy przyjąć ich średnią arytmetyczną. x i+1 =0.5(x i +a/x i ) 11

Wyróżnia się dwa kryteria zakończenia obliczeń w metodach iteracyjnych: gdy wykonano już podaną przez nas liczbę iteracji, dwa kolejne przybliżenia leżą dostatecznie blisko siebie - wówczas wśród danych podajemy wartość parametru Eps, którą można nazywać dokładnością obliczeń i sprawdzamy warunek x i +1 < Eps Algorytm Newtona-Raphsona (metoda Herona) Dane: Liczba podpierwiastkowa a > 0, początkowe przybliżenie wartości pierw. p, maksymalna liczba iteracji MaxIter, dokładność obliczeń Eps. Wynik: Przybliżona wartość pierwiastka kwadratowego z a, otrzymana po wykonaniu nie więcej niż MaxIter iteracji lub po osiągnięciu dokładności Eps. Krok 1. Iter : = 0. Krok 2. x: = (p + a/p )/2; Iter := Iter + 1. Krok3. Jeśli Iter = MaxIter lub p-x < Eps, to zakończ algorytm -x jest szukaną wartością przybliżoną pierwiastka kwadratowego z liczby a. Krok 4. Przyjmij p := x i wróć do kroku 2. 12