LICZBY PIERWSZE. Jan Ciurej Radosław Żak



Podobne dokumenty
Zarys algorytmów kryptograficznych

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

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

Zadania do samodzielnego rozwiązania

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.

Wybrane zagadnienia teorii liczb

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

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

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

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Liczby całkowite. Zadania do pierwszych dwóch lekcji

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

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

Liczba i Reszta czyli o zasadach podzielności

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.)

Luty 2001 Algorytmy (7) 2000/2001

Przykładowe zadania z teorii liczb

Rozmaitości matematyczne. dr Agnieszka Kozak Instytut Matematyki UMCS

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

do instrukcja while (wyrażenie);

O CIEKAWYCH WŁAŚCIWOŚCIACH LICZB TRÓJKĄTNYCH

Liczby pierwsze na straży tajemnic

1 Podstawy c++ w pigułce.

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

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

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

Zaawansowane algorytmy i struktury danych

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

Algorytmy i struktury danych. Wykład 4

2.8. Algorytmy, schematy, programy

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

Wykorzystanie rozkładu liczby na czynniki pierwsze

Matematyka dyskretna

Kongruencje oraz przykłady ich zastosowań

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Programowanie - wykład 4

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Konstrukcje warunkowe Pętle

KONGRUENCJE. 1. a a (mod m) a b (mod m) b a (mod m) a b (mod m) b c (mod m) a c (mod m) Zatem relacja kongruencji jest relacją równoważności.

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

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

Copyright by K. Trybicka-Francik 1

Dominik Matuszek, V Liceum Ogólnokształcące w Bielsku-Białej. Liczby pierwsze

3. Instrukcje warunkowe

Kongruencje i ich zastosowania

Pętla for. Wynik działania programu:

Warunki logiczne instrukcja if

Algorytmy asymetryczne

SCENARIUSZ LEKCJI MATEMATYKI. Temat: Podzielność liczb całkowitych Cel: Uczeń tworzy łańcuch argumentów i uzasadnia jego poprawność

Java Podstawy. Michał Bereta

Copyright by K. Trybicka-Francik 1

Joanna Kluczenko 1. Spotkania z matematyka

Matematyka dyskretna

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

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

Algorytmy w teorii liczb

0.1 Pierścienie wielomianów

Liczby pierwsze. Kacper Żurek, uczeń w Gimnazjum nr 1 im. Jana Pawła II w Giżycku.

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

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

Podzielność liczb przez liczby od 2 do 13 WSTĘP CO TO ZNACZY, ŻE LICZBA JEST PODZIELNA PRZEZ INNĄ LICZBĘ? ZASADY PODZIELNOŚCI PRZEZ LICZBY OD 2 DO 10

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

Kryptologia przykład metody RSA

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

Podzielność liczb przez liczby od 2 do 10 WSTĘP CO TO ZNACZY, ŻE LICZBA JEST PODZIELNA PRZEZ INNĄ LICZBĘ? ZASADY PODZIELNOŚCI

Kongruencje pierwsze kroki

Liczby losowe i pętla while w języku Python

Wykresy i interfejsy użytkownika

Matematyka dyskretna

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Laboratorium kryptograficzne dla licealistów 6

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Pętle. Dodał Administrator niedziela, 14 marzec :27

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

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

Liczby pierwsze. Jacek Nowicki Wersja 1.0

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Jeśli lubisz matematykę

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

Elementy teorii liczb. Matematyka dyskretna

Maria Romanowska UDOWODNIJ, ŻE... PRZYKŁADOWE ZADANIA MATURALNE Z MATEMATYKI

MATEMATYKA W SZKOLE HELIANTUS LICZBY NATURALNE I CA LKOWITE

Algorytmy i struktury danych

Sumy kwadratów kolejnych liczb naturalnych

Algorytm. a programowanie -

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

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Czy liczby pierwsze zdradzą swoje tajemnice? Czy liczby pierwsze zdradzą swoje tajemnice?

wagi cyfry pozycje

Pendolinem z równaniami, nierównościami i układami

FUNKCJA LINIOWA - WYKRES

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Matematyka dyskretna. Wykład 11: Kryptografia z kluczem publicznym. Gniewomir Sarbicki

MADE IN CHINA czyli SYSTEM RESZTOWY

3. Twelve is the sum of numbers seven and five. Is it true or false? odp...

KONSPEKT FUNKCJE cz. 1.

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

Instrukcja warunkowa i złoŝona.

Transkrypt:

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 - mgr inż. Tomasz Łaska

Spis treści: Wstęp.. 1. Co to jest liczba pierwsza? 2. Próby wyznaczania liczb pierwszych... 3. Zastosowanie liczb pierwszych.... 4. Sprawdzanie czy dana liczba jest liczbą pierwszą program.. Literatura... 3 4 5 6 8 9. 2

Wstęp Nasza praca jest o liczbach pierwszych. Wybraliśmy ten temat, ponieważ jest bardzo interesujący. Jest on bardzo obszerny. Dlatego opisaliśmy tu tylko kilka zagadnień. Wyjaśniliśmy czym są te liczby i pokazaliśmy, że jest ich nieskończenie wiele. Zajęliśmy się ich wyszukiwaniem i zastosowaniem. Najpierw przedstawiliśmy wzory na wyliczanie tych liczb podane przez znanych matematyków. Następnie pokazaliśmy ich zastosowanie do szyfrowania numerów kart kredytowych. W naszej pracy liczby naturalne liczyliśmy od 0. Każdy z nas zajął się innym rozdziałem. Rozdziały 1 i 3 napisał Radosław Żak, a rozdziały 2 i 4 Jan Ciurej. Zajmowanie się tematem liczb pierwszych sprawiło nam wiele przyjemności. Mamy nadzieję, że tą pracą zachęcimy innych uczniów do zainteresowania się tymi ciekawymi liczbami. 3

1. Co to jest liczba pierwsza? Liczba pierwsza to liczba naturalna, która posiada dokładnie dwa dzielniki: 1 i samą siebie. Przykładami liczb pierwszych są.: 2, 3, 5, 7, 11, 13. Współtworzą one także inne liczby naturalne, nie będące liczbami pierwszymi, tzn. każdą liczbę naturalną większą od 1, która nie jest liczbą pierwszą można przedstawić w postaci iloczynu liczb pierwszych np.: 130 = 2 5 13 231 = 3 7 11 Liczbą pierwszą nie jest 1, ponieważ ma tylko jeden dzielnik oraz 0, które ma ich nieskończenie wiele. Liczb pierwszych jest nieskończenie wiele, co zostało udowodnione przez żyjącego w IV w. p.n.e. Euklidesa. Założył on, że ilość liczb pierwszych jest skończona. Można je zatem pomnożyć i do wyniku dodać 1. Ilość kolejnych liczb pierwszych Wynik Żaden wynik nie będzie liczbą podzielną przez liczby pierwsze dotąd nam znane, ponieważ w wyniku dzielenia zawsze otrzymamy resztę 1, dlatego będzie podzielny przez nową liczbę pierwszą. Liczba pierwsza lub iloczyn liczb pierwszych 1 2 + 1 = 3 3 2 2 3 + 1 = 7 7 3 2 3 5 + 1 = 31 31 4 2 3 5 7 + 1 = 211 211 5 2 3 5 7 11 + 1 = 2311 2311 6 2 3 5 7 11 13 + 1 = 30031 59 509 4

2. Próby wyznaczania liczb pierwszych. Od dawna próbowano szukać liczb pierwszych za pomocą rożnych wzorów, niestety za każdym razem okazywało się, że wzór zawodzi. W tym rozdziale pokażemy tyko kilka takich prób. Symbol Lp będzie oznaczał liczbę pierwszą, n liczbę naturalną. 1. Leonhard E U L E R próbował wyznaczać liczby pierwsze za pomocą wielu wzorów, m.in. poniższego: Lp = n 2 + n + 41 Jednak dla n = 40 wzór okazał się nieprawidłowy, bo 40 2 + 40 + 41 = 1681 = 41 2 2. Adrian Marie L E G E N D R E wskazał inny wzór: Lp = 2n 2 + 29 który również okazał się niewłaściwy, bo dla n = 29 otrzymujemy 1711 = 29 59 3. E S S C O T amerykański matematyk przekształcił wzór Eulera na taki: Lp = n 2 79n + 1601 Wzór ten zawodzi przy wartości n = 80, bo 80 2 79 80 + 1601= 1681 = 41 2 4. Jest także wzór: Lp m = (2 m + 1) / 3 Daje on wartości liczb pierwszych gdy za m podstawiamy liczby nieparzyste, ale wzór zawodzi gdy za m podstawimy 37. Lp 37 = (2 37 + 1) / 3 = 45812984491 = 1777 25781083. 5. Ludzie nadal nie wynaleźli ogólnego wzoru na wyszukiwanie liczb pierwszych. Największa liczba pierwsza jaką znaleziono do tej pory to 2 57885161-1, która ma 17425170 cyfr. 5

3. Zastosowanie liczb pierwszych. Istnieje wiele zastosowań liczb pierwszych. Tutaj opiszemy jedno z nich, lecz najpierw trzeba poznać arytmetykę modularną wynalezioną przez Carla Gaussa. Wybieramy jakąś liczbę i nazywamy ją modułem. Wynikiem działania modulo będzie reszta z dzielenia wyniku przez moduł. Arytmetykę modularną stosuje się powszechnie w obliczeniach zegarowych. Na przykład jeśli jest godzina 10.00 to za 17 godzin nie będzie 27.00, tylko 3.00, ponieważ (10 + 17) : 24 = 1 reszty 3. W 1977 roku odkryto kod RSA (nazwa pochodzi od pierwszych liter nazwisk twórców: Rona Rivesta, Adi Shamira i Leonarda Adlemana) oparty na liczbach pierwszych. Wykorzystuje się go między innymi do zakupów w sklepach internetowych. Działa on tak: Na stronie internetowej podane są dwie liczby: moduł obliczeń oznaczony literą N, który jest iloczynem dwóch liczb pierwszych p i q oraz kod szyfrujący oznaczony literą E. Karta kredytowa oznaczona jest literą C. Dla przykładu wybieramy małe liczby następująco: p = 17, q = 11, czyli N = 17 11 = 187, E = 9, C = 7. Komputer wykonuje następujące obliczenia: C E (mod N) = F Czyli F jest resztą z dzielenia C E przez N. Tym sposobem nr karty kredytowej został zaszyfrowany, dlatego teraz można wysyłać zaszyfrowaną wiadomość F. W naszym przykładzie F = 7 9 (mod 187) = 129 6

o Aby odszyfrować wiadomość należy znaleźć liczbę deszyfrującą D. Znalezienie tej liczby wiąże się ze znalezieniem czynników pierwszych liczby N, ponieważ: D E (mod (p-1)(q-1))=1 Wracając do przykładu nasze D = 89, ponieważ 89 9 (mod 16 10) = 1 o Teraz można obliczyć C z poniższego wzoru: C = F D (mod N) Podstawiając do wzoru otrzymujemy 129 89 (mod 187) = 7 Kod RSA bardzo trudno złamać, ponieważ trzeba rozłożyć na czynniki pierwsze liczbę N. My mieliśmy ułatwione zadanie, bo znaliśmy p i q. Ale ktoś, kto nie zna tych liczb, nie będzie miał tak łatwo, tym bardziej, że w praktyce używa się bardzo dużych liczb (mających ponad 100 cyfr). 7

4. Sprawdzanie czy dana liczba jest liczbą pierwszą - program. Oto prosty program w języku Python, który sprawdza czy dana liczba jest liczbą pierwszą. Program działa bardzo długo dla dużych liczb. Funkcja lop musi być uruchomiona w języku Python. W nawiasie należy podać zmienną lpp, która podlega sprawdzeniu. Funkcja wraca True lub False. True - jeśli lpp jest liczbą pierwszą, False - jeśli lpp nie jest liczbą pierwszą. def lop(lpp): #definiuje funkcję LOP if lpp==0 or lpp==1: #jeżeli lpp jest równe 0 lub 1 to return False #napisz False i nie rób dalej programu for i in range(lpp): #rozpocznij pętlę (i przyjmuje wartości od 0 do lpp-1) if i==0 or i==1: continue elif lpp%i==0: return False return True #jeżeli i jest równe 0 lub 1 to przejdź dalej #czyli kontynuuj pętlę dla następnych i #jeśli lpp mod i = 0, czyli lpp jest podzielne przez i bez reszty (znak % to dzielenie modulo czyli reszta z dzielenia) #to napisz False nie rób dalej programu #pętla sprawdza podzielność lpp przez wszystkie liczby od 2 do lpp-1, jeżeli nie znajdzie to #napisz True nie rób dalej programu tzn. lpp jest liczbą pierwszą 8

Literatura: 1. Szczepan Jeleński, Śladami Pitagorasa, Państwowe Zakłady Wydawnictw Szkolnych, Warszawa 1953. 2. Ian Stewart, Gabinet matematycznych zagadek, Wydawnictwo Literackie, Kraków 2011. 3. Marcus du Sautory, Poker z Pitagorasem, Carta blanca, Warszawa 2012. 4. http://primes.utm.edu/largest.html 9