Największy wspólny dzielnik dwóch liczb naturalnych ALGORYTM EUKLIDESA

Wielkość: px
Rozpocząć pokaz od strony:

Download "Największy wspólny dzielnik dwóch liczb naturalnych ALGORYTM EUKLIDESA"

Transkrypt

1 Największy wspólny dzielnik dwóch liczb naturalnych ALGORYTM EUKLIDESA Algorytm opisany w Księdze VII Elementów Euklidesa z III wieku p.n.e. pozwala szybko znaleźć nwd(a,b) - największy wspólny dzielnik dwóch liczb naturalnych a i b. a dla a = b nwd( a, b) = nwd( a b, b ) dla a > b lub nwd( a, b a) dla a < b dopóki a róŝne od b jeŝeli a>b to a=a-b w przeciwnym razie b=b-a zwróć a Ten algorytm nie jest optymalny, zwłaszcza gdy a i b róŝnią się znacznie, np. a = i b = 10. A oto szybszy alogorytm, który zamiast odejmowania wykorzystuje operację dzielenia modulo : a dla b = 0 nwd ( a, b) = nwd( b, a mod b ) dla b >= 1 gdzie: mod operator dzielenia modulo; wynikiem jego działania jest reszta z dzielenia a przez b, na przykład 19 mod 7 = 5 Przykład: nwd(16,12) = nwd(12,4) = nwd(4,0) = 4 - funkcja nwd jest wywoływana 3 razy: Napisz ciąg wywołań funkcji rekurencyjnej nwd(a,b) i podaj ile razy wywołano funkcję nwd : a) dla danych a=56 i b=72 Odp: 4 wywołania, nwd=8 b) dla danych a=76 i b=56 Odp: 5 wywołań, nwd=4 c) Podaj iteracyjny przepis funkcji nwd(a,b) z dzieleniem modulo: Odp: dopóki (b>0) r a mod b a b b r zwróć a Istnieje jeszcze szybsza wersja algorytmu Euklidesa: binary GCD, która zamiast zwykłych operacji dzielenia wykorzystuje przesunięcia bitowe przy dzieleniu i mnoŝeniu przez 2: 1. jeŝeli a i b są parzyste, to NWD(a, b) = 2*NWD( a / 2, b / 2 ) 2. dopóki b>0 powtarzaj jeŝeli a jest parzysta i b jest nieparzysta, to NWD(a, b) = NWD( a / 2, b) zaś jeŝeli a jest nieparzyste a b jest parzyste, to NWD(a, b) = NWD(a, b / 2 ) jeŝeli a i b są nieparzyste, to gdy a>b to NWD(a, b) = NWD( (a b) / 2, b) zaś gdy a<b, to NWD(a, b) = NWD(a,( (b-a) / 2 ). 3. zwróć a*2 k, gdzie k jest liczbą wspólnych czynników 2 wyeliminowanych w kroku 1.

2 ROZSZERZONY ALGORYTM EUKLIDESA Największy wspólny dzielnik moŝna przedstawić w postaci zaleŝności liniowej od a i b: nwd(a,b) = x*a + y*b gdzie x i y są współczynnikami o wartościach całkowitych (niekoniecznie dodatnich) Przykład: nwd(45,35) = 5 = -3*45 + 4*35 tu: x=-3 i y=4 nwd(45,35) = nwd(35,10) = nwd(10,5) = nwd(5,0) = 5 ZauwaŜ: = 1 reszty 10 tzn. 10 = 45 1*35 oraz = 3 reszty 5 tzn. 5 = 35 3* Zbierzmy to razem od końca: 5 = 35 3*10 = 35 3*(45-1*35) = 35 3*45 + 3*35 = -3*45 + 4*35 Rozszerzony algorytm Euklidesa pozwala łatwo znaleźć nie tylko nwd(a,b), ale takŝe współczynniki x,y zaleŝności liniowej x*a+y*b dzieki temu, Ŝe przechowuje w kolejnych iteracjach nie tylko resztę z dzielenia: r = a mod b, ale takŝe wynik dzielenia całkowitego: iloraz q = a div b gdzie div operator dzielenia cakowitego. Współczynniki x, y w i-tej iteracji Rozrzeszonego Algorytmu Euklidesa opisane są zaleŝnościami: xi = xi yi = yi 2 2 q * x q * y i 1 x, y przyjmują zawsze wartości początkowe (dla iteracji i=0): i 1 krok (-2): x 2 = 1 y 2 = 0 krok (-1): x y 1 1 = 0 1 = Ostateczne wartości x,y otrzymujemy w tym kroku iteracji, który zawiera ostatnią niezerową wartość reszty z dzielenia a mod b. Przykład dla a=45 i b=35 i a=45 b=35 r = a mod b q = a div b x = x i-2 q*x i-1 y = y i-2 q*y i *0 = 1 0 1*1 = *1 = -3 to jest wynik x to jest wynik nwd ZaleŜność liniowa: nwd(45,35) =..5.. = -3.. * * 35 nwd x a y b 1 3*(-1) = 4 to jest wynik y

3 Zadanie: znajdź nwd(a,b) i jego zaleŝność liniową od a,b dla danych: a=20 i b=13 Uzupełnij zacienione komórki w tabeli i formułę znajdującą się poniŝej tabeli: a b r = a mod b q = a div b x = x i-2 q*x i-1 y = y i-2 q*y i tu jest wynik x tu jest wynik y tu wynik nwd Twoja zaleŝność liniowa: nwd(20,13) =.... =.. * * 13 Odp: nwd(20,13) = 1 = 2*20 3*13 Zadanie : Napisz i uruchom program, który pobiera dwie liczby naturalne a,b a następnie oblicza i zwraca wartość nwd(a,b) oraz wartości współczynników x,y zaleŝności nwd(a,b)=x*a + y*b. czytaj a,b; x2 1 x1 0 y2 0 y1 1 dopóki (b>0) r a mod b q a div b jeŝeli r>0 a b x x2 q*x1 y y2 q*y1 x2 x1 x1 x y2 y1 y1 y b r pisz nwd= a x= x1 y= y1 czerwoną czcionką napisano to, co stanowi rozszerzenie zwykłego algorytmu Euklidesa

4 Zastosowania Rozszerzonego Algorytmu Euklidesa I. Lanie wody Równanie diofantyczne liniowe: x*a + y*b = k gdzie dane są liczby całkowite: a,b,k, jest to równanie, którego rozwiązania: x,y szuka się w dziedzinie liczb całkowitych. Rozwiązanie istnieje tylko wtedy, gdy największy wspólny dzielnik nwd(a,b) jest także dzielnikiem liczby k. Problem można interpretować następująco: Masz dużą kadź oraz dwa mniejsze naczynia o pojemnościach a i b. Aby umieścić w kadzi dokładnie k litrów wody za pomocą naczyń a i b,odmierzysz wodę x razy naczyniem o pojemności a, oraz y razy drugim naczyniem, o pojemności b. Kadź uda się napełnić żądaną objętością k litrów wody przy pomocy naczyń a,b tylko wówczas, gdy nwd(a,b) jest także podzielnikiem liczby k. Przykład: 1) dla danych: a=5, b=7, k=3 istnieje rozwiązanie: x=2, y=-1 2) dla danych: a=4, b=10, k=15 nie ma rozwiązania. Zwykły algorytm Euklidesa pomoże rozstrzygnąć problem: czy w ogóle uda się odmierzyć k litrów naczyniami a i b. Jeżeli tak to rozszerzony algorytm Euklidesa dostarczy informacji o tym ile razy trzeba użyć naczynia a i ile razy użyć naczynia b, rozwiazaniem będą (współczynniki x,y). Ale często nie będzie to rozwiązanie optymalne z punktu widzenia praktycznego. Chciałoby się jak najmniej razy machać tymi naczyniami, to znaczy: aby liczba operacji nalewania i wylewania wody: x + y była minimalna. Przykład: odmierz 9 litrów przy pomocy naczyń: 12 i 21 litrowych. Rozszerzony algorytm Euklidesa zaproponuje: 6*12 + (-3)*21 = 9, razem 6+3=9 operacji ale przecież można prościej: 1*21 + (-1)*12 = 9, wystarczą 2 operacje. Pozostaje także problem jak duża musi być kadź. Zauważ że jeden ze współczynników (x,y) może być ujemny, to znaczy musisz zabrać z kadzi a lub b litrów wody uprzednio nalanej. Kadź musi więc być odpowiednio duża, często większa od żądanej objętości k. Jaka jest potrzebna minimalna pojemność kadzi? Zadanie: W jaki sposób napełnić kadź dwoma litrami wody k=2, posługując się naczyniami o pojemnościach a=5 i b=7 litrów tak, aby w trakcie napełniania kadzi ilość zawartej w niej wody była jak najmniejsza? Jaką co najmniej pojemność musi mieć kadź?

5 // program: napełnianie kadzi int A,B,k; // A,B naczynia, k - kadź cout<<"ile nalac? "; cin>>k; cout<<"jakie naczynia a,b? "; cin>>a>>b; int a=a, b=b; int x, x1=0, x2=1; int y, y1=1, y2=0; int r,q; while (b>0) { r=a%b; q=a/b; if (r>0) { x=x2-q*x1; y=y2-q*y1; x2=x1; x1=x; y2=y1; y1=y; a=b; b=r; cout<<"nwd="<<a<<"=x*a+y*b="<<x<<"*"<<a<<" + "<<y<<"*"<<b <<endl<<endl; if (k%a!=0) cout<<"nie da się nalać "<<k<<" litrow tymi naczyniami\n"; else { cout<<"\n napelnic kadz mozna tak:\n"; int q=k/a; cout<<a<<"*"<<x*q<<" + "<<B<<"*"<<y*q<<endl; cout<<"\n ale moŝna i tak:\n"; int w=0; // bieŝący stan napełnienia kadzi while (w!=k) { if (w<k) { // jeŝeli w kadzi jest za mało if (k-w ==A) {w=w+a; cout<<" wlej "<<A<<" w="<<w<<endl; else if (k-w ==B) {w=w+b; cout<<" wlej "<<B<<" w="<<w<<endl; else { if (A>B) {w=w+a; cout<<" wlej "<<A<<" w="<<w<<endl; else {w=w+b; cout<<" wlej "<<B<<" w="<<w<<endl; else { // jeŝeli w kadzi jest za duŝo if (k-w ==-A) {w=w-a; cout<<" odlej "<<A<<" w="<<w<<endl; else if (k-w ==-B) {w=w-b; cout<<" odlej "<<B<<" w="<<w<<endl; else { if (A<B) {w=w-a; cout<<" odlej "<<A<<" w="<<w<<endl; else {w=w-b; cout<<" odlej "<<B<<" w="<<w<<endl;

6 II. Rozszerzony Algorytm Euklidesa przydaje się w kryptografii z zastosowaniem algorytmu RSA, do wyznaczenia klucza prywatnego gdy znamy składniki klucza publicznego. Kodowanie RSA: szyfrowanie: ( dana e ) mod n gdzie (n,e) klucz publiczny deszyfrowanie: ( szyfr d ) mod n Najpierw wybiera się klucz publiczny (n,e), jawny, służący do szyfrowania: gdzie (n,d) klucz prywatny Wybieramy dwie liczby pierwsze, na przykład: p = 7 i q = 11. Ich iloczyn: n = p*q = 77 Wyznaczamy Φ =(p -1)(q -1) = 6 *10 = 60. Wybieramy liczbę e względnie pierwszą z Φ, czyli taką że nwd(φ,e)=1, na przykład e = 13. Klucz publiczny: (77,13) Następnie wyznacza się klucz prywatny (n,d), tajny, służący do odszyfrowania: Szukamy d takiego, Ŝe d*e 1 (mod Φ) czyli w naszym przykładzie: d * 13 1 (mod 60) Rozszerzony Algorytm Euklidesa NWD(Φ,e) zwróci nam parę współczynników (x,y). Jeśli argumenty NWD są liczbami wzglednie pierwszymi, to (x,y) są są odwrotnościami modularnymi argumentów funkcji NWD(Φ,e) : Odwrotność modulo: x jest odwrotnością modulo b liczby a, NWD(Φ,e) = 1 = x*φ + y*e to znaczy: (x*a) mod b =1, Liczby Φ, e są względem siebie pierwsze, więc w innym zapisie x * a 1(mod b) y*e 1 (mod Φ), co oznacza Ŝe znaleziona wartość y odpowiada d = y Φ e q=φ /e Φ =e e =Φ mod e x -2 x -1 = x i-2 q*x i-1 y -2 y -1 = y i-2 q*y i Sprawdźmy: nwd(φ,e) = x*φ + y*e = 5*60 + (-23)*13 = 1 Współczynnik y ma wartość ujemną. RównowaŜne mu będą wszystkie wartości róŝniące się o Φ=60, względem którego liczymy modulo: 13 * (-23) 1 mod * (60-23) 1 mod * 37 1 mod 60 czyli d = 37. Klucz prywatny (77,37). Podanym kluczem moŝna szyfrować liczby o wartości mniejszej od n=77.

7 NaleŜy utajnić wszelką informację o uŝytych liczbach p i q : 7 i 11, poniewaŝ znając te liczby łatwo moŝna wyznaczyć klucz prywatny. Cała trudność złamania szyfru RSA opiera się na trudności rozkładu liczby n na iloczyn liczb pierwszych p i q w realnym czasie (gdy wartość n jest dostatecznie duŝa) Zadanie : Dany jest klucz publiczny (e,n): n=91 oraz e=5. Wyznacz brakującą liczbę d w kluczu prywatnym: wyznacz dwie liczby pierwsze : p i q takie Ŝe n=p*q Rozwiązanie - na przykład: p=13 i q=7) dobierz liczbę d wiedząc Ŝe d jest odwrotnością modulo Φ liczby e, czyli d * e 1 (mod Φ) Wskazówka: zastosuj Rozszerzony Algorytm Euklidesa dla nwd(φ,e) i przypisz d y Rozwiązanie: Φ=(p-1)*(q-1)= (13-1)*(7-1)=12*6=72 Φ e r = Φ mod e q = Φ div e y = y i-2 q*y i to jest wynik d Rozwiazanie: Klucz prywatny (d,n) = (29,91), wartość liczby deszyfrujacej d=29 Podczas szyfrowania RSA natrafiamy na problem bardzo dużych liczb jako wyników potęgowania. Można go uniknąć, bo potrzebna jest tylko potęga modulo n, co wcale nie musi być dużą liczbą. h = a e mod n można rozpisać jako h = ((a mod n) * a mod n)... * a mod n I jeszcze usprawnić algorytm. Pamiętasz sprytny algorytm szybkiego potęgowania (dla wykładników naturalnych)? Wykorzystywał on właściwość b a = ( a funkcja potęga(a, b) // wersja rekurencyjna jeŝeli b = 0 zwróć 1 jeŝeli b jest nieparzysta zwróć a*potęga(a, n-1) w przeciwnym przypadku a = potęga(a, b/2) zwróć a 2 z potęgowaniem modulo jest podobnie: b 2 ) 2 funkcja potegamodulo (a, b, n ) // wersja iteracyjna wynik =1; dopóki (b>0) { jeŝeli (b nieparzyste) wynik = (wynik*a) mod n; a = (a*a) mod n; b = b/2; zwróć wynik; funkcja potega(a,b) // wersja iteracyjna: wynik=1; x=a; dopóki (b>0) jeŝeli (b nieparzyste) wynik *= x; b -- w przeciwnym razie x *= x b = b/2 zwróć wynik

8 Zadanie Zastosuj klucz publiczny z poprzedniego zadania do zaszyfrowania słowa DEMOTYWATOR. Zaszyfruj osobno każdy znak tego słowa (biorąc jako daną źródłową kod ASCII znaku). Wyświetl (lub zapisz w pliku) ciąg liczb będących wynikiem szyfrowania. Nastepnie zdeszyfruj otrzymany ciąg liczb przy pomocy klucza prywatnego z poprzedniego zadania. Kolejne zdeszyfrowane liczby potraktuj jako kody ASCII i wyświetl ich reprezentację znakową. Mam nadzieję że otrzymasz z powrotem słowo DEMOTYWATOR int potegamodulo(int a, int b, int c) { int r=1; while (b>0) { if (b%2!= 0) r=(r*a)%c; a=(a*a)%c; b=b/2; return r; int main() { string s="demotywator"; int ns=s.length(); int n=77; // nie moŝesz szyfrować liczb większych od n int e=13; // klucz publiczny (77,13) int d=37; // klucz prywatny (77,37) int T[20]; // tablica przechowuje liczby po zaszyfrowaniu for (int i=0; i<ns; i++) { ponieważ najmniejszy kod (litera A) ma wartość 65, odejmuję 64 od int kod = (int)s[i]-64; wszystkich kodów aby uzyskać mniejsze liczby do szyfrowania // szyfrowanie: (kod^e) % n int zasz = potegamodulo(kod,e,n); cout<<s[i]<<" "<<kod<<" "<<zasz<<" "<<endl; T[i]=zasz; cout<<endl<<endl; for (int i=0; i<ns; i++) { int z = T[i]; // deszyfrowanie: (z^d) % n int odsz = potegamodulo(z,d,n); char znak = (char)(odsz+64); cout<<znak<<" "<<odsz<<endl; cout<<endl<<endl; system("pause"); return EXIT_SUCCESS;

Wybrane zagadnienia teorii liczb

Wybrane zagadnienia teorii liczb Wybrane zagadnienia teorii liczb Podzielność liczb NWW, NWD, Algorytm Euklidesa Arytmetyka modularna Potęgowanie modularne Małe twierdzenie Fermata Liczby pierwsze Kryptosystem RSA Podzielność liczb Relacja

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

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

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40 Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska E-mail: Strona internetowa: robert.wojcik@pwr.edu.pl google: Wójcik

Bardziej szczegółowo

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 5

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś   Wykład 5 Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 5 Spis treści 9 Algorytmy asymetryczne RSA 3 9.1 Algorytm RSA................... 4 9.2 Szyfrowanie.....................

Bardziej szczegółowo

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA Grzegorz Bobiński Uniwersytet Mikołaja Kopernika Toruń, 22.05.2010 Kodowanie a szyfrowanie kodowanie sposoby przesyłania danych tak, aby

Bardziej szczegółowo

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

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu: ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu: Rys1 Ćwiczenie 2 Podaj jaki ciąg znaków zostanie wypisany po wykonaniu

Bardziej szczegółowo

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3. (Aktualizacja z dnia 3 kwietnia 2013) MATEMATYKA DYSKRETNA - informatyka semestr 2 (lato 2012/2013) Zadania do omówienia na zajęciach w dniach 21 i 28 kwietnia 2013 ZESTAW NR 3/7 (przykłady zadań z rozwiązaniami)

Bardziej szczegółowo

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR 1. Algorytm XOR Operacja XOR to inaczej alternatywa wykluczająca, oznaczona symbolem ^ w języku C i symbolem w matematyce.

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA) Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, 19.06.2005 1 Kryptografia: algorytmy asymetryczne (RSA) Niech E K (x) oznacza szyfrowanie wiadomości x kluczem K (E od encrypt, D K (x)

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

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

LICZBY PIERWSZE. 14 marzec 2007. Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F. Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F. Gauss (1777-1855) 14 marzec 2007 Zasadnicze twierdzenie teorii liczb Zasadnicze twierdzenie teorii liczb Ile jest liczb

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Przykładowe zadania z teorii liczb

Przykładowe zadania z teorii liczb Przykładowe zadania z teorii liczb I. Podzielność liczb całkowitych. Liczba a = 346 przy dzieleniu przez pewną liczbę dodatnią całkowitą b daje iloraz k = 85 i resztę r. Znaleźć dzielnik b oraz resztę

Bardziej szczegółowo

Proste programy w C++ zadania

Proste programy w C++ zadania Proste programy w C++ zadania Zbiór zadao do samodzielnego rozwiązania stanowiący powtórzenie materiału. Podstawy C++ Budowa programu w C++ Dyrektywy preprocesora Usunięcie dublujących się nazw Częśd główna

Bardziej szczegółowo

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA) Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, 7.06.2005 1 Kryptografia: algorytmy asymetryczne (RSA) Niech E K (x) oznacza szyfrowanie wiadomości x kluczem K (E od encrypt, D K (x)

Bardziej szczegółowo

Język C zajęcia nr 5

Język C zajęcia nr 5 Język C zajęcia nr 5 Instrukcja wyboru switch switch ( wyr ) inst Głównym przeznaczeniem instrukcji switch jest rozgałęzianie wykonania programu na wiele różnych ścieżek w zależności od wartości pewnego

Bardziej szczegółowo

2.8. Algorytmy, schematy, programy

2.8. Algorytmy, schematy, programy https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego

Bardziej szczegółowo

Zarys algorytmów kryptograficznych

Zarys algorytmów kryptograficznych Zarys algorytmów kryptograficznych Laboratorium: Algorytmy i struktury danych Spis treści 1 Wstęp 1 2 Szyfry 2 2.1 Algorytmy i szyfry........................ 2 2.2 Prosty algorytm XOR......................

Bardziej szczegółowo

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

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end; Rekurencja Wykład: rekursja, funkcje rekurencyjne, wywołanie samej siebie, wyznaczanie poszczególnych liczb Fibonacciego, potęgowanie, algorytm Euklidesa REKURENCJA Rekurencja (z łac. recurrere), zwana

Bardziej szczegółowo

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy

Bardziej szczegółowo

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

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska, Teoria liczb Magdalena Lemańska Literatura Matematyka Dyskretna Andrzej Szepietowski http://wazniak.mimuw.edu.pl/ Discrete Mathematics Seymour Lipschutz, Marc Lipson Wstęp Teoria liczb jest dziedziną matematyki,

Bardziej szczegółowo

Algorytmy w teorii liczb

Algorytmy w teorii liczb Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,

Bardziej szczegółowo

Kryptologia przykład metody RSA

Kryptologia przykład metody RSA Kryptologia przykład metody RSA przygotowanie: - niech p=11, q=23 n= p*q = 253 - funkcja Eulera phi(n)=(p-1)*(q-1)=220 - teraz potrzebne jest e które nie jest podzielnikiem phi; na przykład liczba pierwsza

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Luty 2001 Algorytmy (8) 2000/2001

Luty 2001 Algorytmy (8) 2000/2001 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

Bardziej szczegółowo

LICZBY PIERWSZE. Jan Ciurej Radosław Żak

LICZBY PIERWSZE. Jan Ciurej Radosław Żak LICZBY PIERWSZE Jan Ciurej Radosław Żak klasa IV a Katolicka Szkoła Podstawowa im. Świętej Rodziny z Nazaretu w Krakowie ul. Pędzichów 13, 31-152 Kraków opiekun - mgr Urszula Zacharska konsultacja informatyczna

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

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

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba) 1. Liczby wymierne. - wartość bezwzględna liczby. dla 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba) - dla < 0 ( wartością bezwzględną liczby ujemnej jest liczba do niej przeciwna) W interpretacji

Bardziej szczegółowo

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.

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. 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. Schemat Hornera. Wyjaśnienie: Zadanie 1. Pozycyjne reprezentacje

Bardziej szczegółowo

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

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony. Iteracje Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony. Iteracja inaczej zwana jest pętlą i oznacza wielokrotne wykonywanie instrukcji. Iteracje

Bardziej szczegółowo

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci: 1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci: * Jan Kowalski * * ul. Zana 31 * 3. Zadeklaruj zmienne przechowujące

Bardziej szczegółowo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)

Bardziej szczegółowo

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 6a

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś  Wykład 6a Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 6a Spis treści 10 Trochę matematyki (c.d.) 3 10.19 Reszty kwadratowe w Z p.............. 3 10.20

Bardziej szczegółowo

Kryptografia-0. przykład ze starożytności: około 489 r. p.n.e. niewidzialny atrament (pisze o nim Pliniusz Starszy I wiek n.e.)

Kryptografia-0. przykład ze starożytności: około 489 r. p.n.e. niewidzialny atrament (pisze o nim Pliniusz Starszy I wiek n.e.) Kryptografia-0 -zachowanie informacji dla osób wtajemniczonych -mimo że włamujący się ma dostęp do informacji zaszyfrowanej -mimo że włamujący się zna (?) stosowaną metodę szyfrowania -mimo że włamujący

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna Wykład 6: Ciała skończone i kongruencje Gniewomir Sarbicki 2 marca 2017 Relacja przystawania Definicja: Mówimy, że liczby a, b Z przystają modulo m (co oznaczamy jako a = b (mod m)),

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna Wykład 6: Ciała skończone i kongruencje Gniewomir Sarbicki 24 lutego 2015 Relacja przystawania Definicja: Mówimy, że liczby a, b Z przystają modulo m (co oznaczamy jako a = b (mod

Bardziej szczegółowo

Algorytmy i język C++

Algorytmy i język C++ Wykład 6 Wskaźniki Wskaźnik nie przechowuje wartości zmiennej ale, podobnie jak tablica, wskazuje miejsce w pamięci, w którym znajduje się zmienna danego typu. W poniższym przykładzie symbol * pomiędzy

Bardziej szczegółowo

Zegar ten przedstawia reszty z dzielenia przez 6. Obrazuje on jak kolejne liczby można przyporządkować do odpowiednich pokazanych na zegarze grup.

Zegar ten przedstawia reszty z dzielenia przez 6. Obrazuje on jak kolejne liczby można przyporządkować do odpowiednich pokazanych na zegarze grup. Rozgrzewka (Ci, którzy znają pojęcie kongruencji niech przejdą do zadania 3 bc i 4, jeśli i te zadania są za proste to proponuje zadanie 5): Zad.1 a) Marek wyjechał pociągiem do Warszawy o godzinie 21

Bardziej szczegółowo

Konstrukcje warunkowe Pętle

Konstrukcje warunkowe Pętle * Konstrukcje warunkowe Pętle *Instrukcja if sposób na sprawdzanie warunków *Konstrukcja: if(warunek) else { instrukcje gdy warunek spełniony} {instrukcje gdy warunek NIE spełniony} * 1. Wylicz całkowity

Bardziej szczegółowo

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

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa. 2 Egzamin maturalny z informatyki Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie lub, która odpowiedź jest prawdziwa, a która fałszywa. a) rzeanalizuj poniższy algorytm (:= oznacza instrukcję

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

RSA. R.L.Rivest A. Shamir L. Adleman. Twórcy algorytmu RSA

RSA. R.L.Rivest A. Shamir L. Adleman. Twórcy algorytmu RSA RSA Symetryczny system szyfrowania to taki, w którym klucz szyfrujący pozwala zarówno szyfrować dane, jak również odszyfrowywać je. Opisane w poprzednich rozdziałach systemy były systemami symetrycznymi.

Bardziej szczegółowo

Laboratorium kryptograficzne dla licealistów 6

Laboratorium kryptograficzne dla licealistów 6 Laboratorium kryptograficzne dla licealistów 6 Projekt Matematyka dla ciekawych świata Łukasz Mazurek 11.05.2017 1 Potęgowanie W kryptografii często wykonuje się operację potęgowania modulo. Np. w algorytmie

Bardziej szczegółowo

Zadania do samodzielnego rozwiązania

Zadania do samodzielnego rozwiązania Zadania do samodzielnego rozwiązania I. Podzielność liczb całkowitych 1. Pewna liczba sześciocyfrowa a kończy się cyfrą 5. Jeśli tę cyfrę przestawimy na miejsce pierwsze ze strony lewej, to otrzymamy nową

Bardziej szczegółowo

Zadanie 1. Potęgi (14 pkt)

Zadanie 1. Potęgi (14 pkt) 2 Egzamin maturalny z informatyki Zadanie 1. otęgi (14 pkt) W poniższej tabelce podane są wartości kolejnych potęg liczby 2: k 0 1 2 3 4 5 6 7 8 9 10 2 k 1 2 4 8 16 32 64 128 256 512 1024 Ciąg a=(a 0,

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala

Bardziej szczegółowo

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

Największy wspólny dzielnik Algorytm Euklidesa (także rozszerzony) WZAiP1: Chińskie twierdzenie o resztach Największy wspólny dzielnik Algorytm Euklidesa (także rozszerzony) Chińskie twierdzenie o resztach Wybrane zagadnienia algorytmiki i programowania I 27 października 2010 Największy wspólny dzielnik - definicja

Bardziej szczegółowo

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

Teoria liczb. Zajmuje się własnościami liczb, wszystkim całkowitych Teoria liczb Zajmuje się własnościami liczb, przede wszystkim całkowitych Niepraktyczna? - kryptografia Dzielenie liczb całkowitych z resztą Niech b>0, wtedy dla każdej liczby całkowitej a istnieją jednoznacznie

Bardziej szczegółowo

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Podstawy systemów kryptograficznych z kluczem jawnym RSA Podstawy systemów kryptograficznych z kluczem jawnym RSA RSA nazwa pochodząca od nazwisk twórców systemu (Rivest, Shamir, Adleman) Systemów z kluczem jawnym można używać do szyfrowania operacji przesyłanych

Bardziej szczegółowo

Algorytmy asymetryczne

Algorytmy asymetryczne Algorytmy asymetryczne Klucze występują w parach jeden do szyfrowania, drugi do deszyfrowania (niekiedy klucze mogą pracować zamiennie ) Opublikowanie jednego z kluczy nie zdradza drugiego, nawet gdy można

Bardziej szczegółowo

Copyright by K. Trybicka-Francik 1

Copyright by K. Trybicka-Francik 1 Bezpieczeństwo systemów komputerowych Algorytmy kryptograficzne (2) Szyfry wykładnicze Pohlig i Hellman 1978 r. Rivest, Shamir i Adleman metoda szyfrowania z kluczem jawnym DSA (Digital Signature Algorithm)

Bardziej szczegółowo

Copyright by K. Trybicka-Francik 1

Copyright by K. Trybicka-Francik 1 Bezpieczeństwo systemów komputerowych Algorytmy kryptograficzne (2) mgr Katarzyna Trybicka-Francik kasiat@zeus.polsl.gliwice.pl pok. 503 Szyfry wykładnicze Pohlig i Hellman 1978 r. Rivest, Shamir i Adleman

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje

Bardziej szczegółowo

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze. Wykład 2 Temat: Algorytm kryptograficzny RSA: schemat i opis algorytmu, procedura szyfrowania i odszyfrowania, aspekty bezpieczeństwa, stosowanie RSA jest algorytmem z kluczem publicznym i został opracowany

Bardziej szczegółowo

Informatyka A. Algorytmy

Informatyka A. Algorytmy Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................

Bardziej szczegółowo

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================

Bardziej szczegółowo

WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE. Bartosz Łakomy i Dariusz Dobiesz

WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE. Bartosz Łakomy i Dariusz Dobiesz WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE Bartosz Łakomy i Dariusz Dobiesz SPIS TREŚCI: Liczby parzyste i nieparzyste Liczby podzielne lub niepodzielne przez zadane podzielniki NWD algorytm

Bardziej szczegółowo

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

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych Arytmetyka liczb całkowitych Wykład 1 Na początku zajmować się będziemy zbiorem liczb całkowitych Z = {0, ±1, ±2,...}. Zakładamy, że czytelnik zna relację

Bardziej szczegółowo

Szyfrowanie RSA. Liczba pierwsza jest liczbą naturalną posiadającą dokładnie dwa różne podzielniki - 1 oraz samą siebie.

Szyfrowanie RSA. Liczba pierwsza jest liczbą naturalną posiadającą dokładnie dwa różne podzielniki - 1 oraz samą siebie. Szyfrowanie RSA Liczby pierwsze Na początek przypomnijmy sobie parę użytecznych wiadomości o liczbach pierwszych. Są one znane od starożytności a ich znaczenie jest ogromne w matematyce i tym bardziej

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna Wykład 4: Podzielność liczb całkowitych Gniewomir Sarbicki Dzielenie całkowitoliczbowe Twierdzenie: Dla każdej pary liczb całkowitych (a, b) istnieje dokładnie jedna para liczb całkowitych

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI

EGZAMIN MATURALNY Z INFORMATYKI ARKUSZ ZAWIERA INORMACJE RAWNIE CHRONIONE DO MOMENTU ROZOCZĘCIA EGZAMINU! Miejsce na naklejkę EGZAMIN MATURALNY Z INORMATYKI MIN-R1_1-092 MAJ ROK 2009 OZIOM ROZSZERZONY CZĘŚĆ I Czas pracy 90 minut Instrukcja

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

MADE IN CHINA czyli SYSTEM RESZTOWY

MADE IN CHINA czyli SYSTEM RESZTOWY MADE IN CHINA czyli SYSTEM RESZTOWY System ten oznaczmy skrótem RNS (residue number system czyli po prostu resztowy system liczbowy). Wartość liczby w tym systemie reprezentuje wektor (zbiór) reszt z dzielenia

Bardziej szczegółowo

WIELOMIANY I FUNKCJE WYMIERNE

WIELOMIANY I FUNKCJE WYMIERNE WIELOMIANY I FUNKCJE WYMIERNE. RozwiąŜ nierówność.. Dla jakiej wartości parametru a R wielomian W() = ++ a dzieli się bez reszty przez +?. Rozwiązać nierówność: a) 5 b) + 4. Wyznaczyć wartości parametru

Bardziej szczegółowo

Elementy teorii liczb. Matematyka dyskretna

Elementy teorii liczb. Matematyka dyskretna Elementy teorii liczb Matematyka dyskretna Teoria liczb dziedzina matematyki, zajmująca się badaniem własności liczb (początkowo tylko naturalnych). Jej początki sięgają starożytności. Zajmowali się nią

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne) Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. MIN 2017 KOD UZUPEŁNIA ZDAJĄCY PESEL miejsce na naklejkę EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY CZĘŚĆ I DATA: 10

Bardziej szczegółowo

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

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

ZADANIE 1. Ważenie (14 pkt)

ZADANIE 1. Ważenie (14 pkt) ZADANIE 1. Ważenie (14 pkt) Danych jest n przedmiotów o niewielkich gabarytach i różnych wagach. Jest też do dyspozycji waga z dwiema szalkami, ale nie ma odważników. Kładąc na wadze przedmioty a i b,

Bardziej szczegółowo

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski Programowanie w C/C++ Instrukcje - konstrukcje powtórka LABORKA Piotr Ciskowski zadanie 1. Licz się ze sobą Napisz funkcję bez argumentów i bez wyniku, która za każdym wywołaniem będzie podawała, ile razy

Bardziej szczegółowo

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76 . p. 1 Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji wykonania zadania mającego określony stan końcowy dla każdego zestawu danych wejściowych W algorytmach mogą występować

Bardziej szczegółowo

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

Funkcja kwadratowa. f(x) = ax 2 + bx + c, Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax 2 + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax 2, a R \

Bardziej szczegółowo

do instrukcja while (wyrażenie);

do instrukcja while (wyrażenie); Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie

Bardziej szczegółowo

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

Wykład 4. Określimy teraz pewną ważną klasę pierścieni. Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

----------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------- Strona1 Napisz program, który czyta zdanie, a następnie wypisuje po kolei długości kolejnych jego wyrazów. Zakładamy, że zdanie zawiera litery alfabetu łacińskiego i spacje (po jednej pomiędzy dwoma dowolnymi

Bardziej szczegółowo

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania Wykład: 4 Instrukcje sterujące, operatory 1 programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe ; instrukcja_krok ) tresc_petli ; instrukcja_ini

Bardziej szczegółowo

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 2. Zmienne i stałe Przykłady 2.1. Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 5 int a = 281; int b = 117; 7 8 cout

Bardziej szczegółowo

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

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13 Poniedziałek 12 listopada 2012 - zaczynamy od omówienia zadań z kolokwium nr 1. Wtorek 13 listopada 2012 - odbywają się zajęcia czwartkowe. 79. Uprościć wyrażenia a) 4 2+log 27 b) log 3 2 log 59 c) log

Bardziej szczegółowo

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

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie

Bardziej szczegółowo

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012 Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012 if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; if (warunek) instrukcja1; else if (warunek2)

Bardziej szczegółowo

I) Reszta z dzielenia

I) Reszta z dzielenia Michał Kremzer tekst zawiera 9 stron na moim komputerze Tajemnice liczb I) Reszta z dzielenia 1) Liczby naturalne dodatnie a, b, c dają tę samą resztę przy dzieleniu przez 3. Czy liczba A) a + b + c B)

Bardziej szczegółowo

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy. Zadania język C++ Zad. 1 Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy. (Być moŝe są w tym samym wieku. Zrób w programie warunek,

Bardziej szczegółowo

Wojewódzki Przedmiotowy Konkurs z informatyki dla uczniów szkół gimnazjalnych ETAP REJONOWY 2008/2009 TEST

Wojewódzki Przedmiotowy Konkurs z informatyki dla uczniów szkół gimnazjalnych ETAP REJONOWY 2008/2009 TEST TEST. Test składa się z 35 zadań. Na jego rozwiązanie masz 90 minut. W kaŝdym zadaniu wybierz jedną, najlepszą według Ciebie odpowiedź i zaznacz na karcie odpowiedzi znakiem x. Do dyspozycji masz wszystkie

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

6. Pętle while. Przykłady

6. Pętle while. Przykłady 6. Pętle while Przykłady 6.1. Napisz program, który, bez użycia rekurencji, wypisze na ekran liczby naturalne od pewnego danego n do 0 włącznie, w kolejności malejącej, po jednej liczbie na linię. Uwaga!

Bardziej szczegółowo

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład VII Kierunek Informatyka - semestr V Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Problem pakowania plecaka System kryptograficzny Merklego-Hellmana

Bardziej szczegółowo

Programowanie w Baltie klasa VII

Programowanie w Baltie klasa VII Programowanie w Baltie klasa VII Zadania z podręcznika strona 127 i 128 Zadanie 1/127 Zadanie 2/127 Zadanie 3/127 Zadanie 4/127 Zadanie 5/127 Zadanie 6/127 Ten sposób pisania programu nie ma sensu!!!.

Bardziej szczegółowo

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

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax, a R \ {0}.

Bardziej szczegółowo

Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego

Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego Program Operacyjny Kapitał Ludzki 2007-2013 CZŁOWIEK NAJLEPSZA INWESTYCJA Publikacja

Bardziej szczegółowo

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

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów Treść wykładu Pierścienie wielomianów. Definicja Niech P będzie pierścieniem. Wielomianem jednej zmiennej o współczynnikach z P nazywamy każdy ciąg f = (f 0, f 1, f 2,...), gdzie wyrazy ciągu f są prawie

Bardziej szczegółowo

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od

Bardziej szczegółowo

Napisz program, który dla podanej na standardowym wejściu temperatury w stopniach Fahrenheita wypisze temperaturę w stopniach Celsjusza.

Napisz program, który dla podanej na standardowym wejściu temperatury w stopniach Fahrenheita wypisze temperaturę w stopniach Celsjusza. ZADANIE 1 Stopnie Napisz program, który dla podanej na standardowym wejściu temperatury w stopniach Fahrenheita wypisze temperaturę w stopniach Celsjusza. MoŜesz wykorzystać wzór: C = 5 / 9 ( F - 32 )

Bardziej szczegółowo

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR

Bardziej szczegółowo

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Wieczorowe Studia Licencjackie Wrocław, 7.11.2006 Wstęp do programowania Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Zaprezentujemy teraz algorytm na wyznaczanie wszystkich

Bardziej szczegółowo

Zajęcia 4 procedury i funkcje

Zajęcia 4 procedury i funkcje Zajęcia 4 procedury i funkcje 1. Napisz funkcję, która dokonuje dodania dwóch liczb przekazanych jako parametry. Następnie: zmień wartości zmiennych przekazanych jako parametry wewnątrz tej funkcji, ustaw

Bardziej szczegółowo

Matematyka Dyskretna. Andrzej Szepietowski. 25 marca 2004 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 marca 2004 roku Matematyka Dyskretna Andrzej Szepietowski 25 marca 2004 roku Rozdział 1 Teoria liczb 1.1 Dzielenie całkowitoliczbowe Zacznijmy od przypomnienia szkolnego algorytmu dzielenia liczb naturalnych. Podzielmy

Bardziej szczegółowo