Zadanie 1 Już w starożytności matematycy ze szkoły pitagorejskiej, którzy szczególnie cenili sobie harmonię i ład wśród liczb, interesowali się liczbami bliźniaczymi, czyli takimi parami kolejnych liczb pierwszych, których różnica jest równa 2. Takimi parami są 5 i 7, 11 i 13, 17 i 19, itd. Zasadnicze pytania dotyczą istnienia nieskończenie wielu liczb pierwszych bliźniaczych. Do dziś nie wiadomo, czy takich par jest skończenie, czy też nieskończenie wiele. Wiadomo natomiast, że liczby te są rozmieszczone bardzo rzadko, nawet jeśli jest ich nieskończenie wiele. a) Napisz program, który dla dwóch liczb naturalnych dodatnich (mniejszych od 10 9 ) podanych przez użytkownika, wypisze komunikat TAK, jeśli są to liczby bliźniacze i NIE, w przeciwnym przypadku. b) Napisz program, który wypisze wszystkie dwucyfrowe liczby bliźniacze. c) Istnieją także czwórki kolejnych liczb pierwszych, dające dwie pary liczb bliźniaczych, np. 11, 13, 17, 19 lub 191, 193, 197, 199. Jeżeli taką czwórkę tworzą liczby pierwsze p, p+2, p + 6 i p + 8, to pary takie nazywamy liczbami czworaczymi. Napisz program, który dla czterech liczb naturalnych dodatnich (mniejszych od 10 9 ) podanych przez użytkownika, wypisze komunikat TAK, jeśli są to liczby czworacze i NIE, w przeciwnym przypadku. przy rozwiązywaniu punktu b) można wykorzystać sito Eratostenesa i tablicować liczby pierwsze, a następnie wypisać z tablicy tylko te, które są liczbami bliźniaczymi. ZADANIE 2 - Liczby zaprzyjaźnione i liczby doskonałe Gdy zapytano Pitagorasa: Co to jest przyjaciel? - odpowiedział: Przyjaciel to drugi ja; przyjaźń, to stosunek liczb 220 i 284. Stąd prawdopodobnie pochodzi nazwa liczb zaprzyjaźnionych. Liczby zaprzyjaźnione to dwie liczby naturalne,
gdzie każda z nich jest równa sumie dzielników właściwych drugiej liczby. Pierwsza para to 220 i 284. Ciekawostka: W starożytności i średniowieczu liczbom zaprzyjaźnionym przypisywano znaczenie mistyczne. Pewien średniowieczny Książę, którego liczbowa wartość imienia wynosiła 284, pozostał do śmierci kawalerem, bo nie mógł znaleźć narzeczonej, której imię miałoby wartość 220. a) Napisz program, który dla danej liczby naturalnej dodatniej (mniejszej od 10 6 ) podanej przez użytkownika, wypisze jej wszystkie dzielniki oraz sumę tych dzielników. b) Napisz program, który dla dwóch liczb naturalnych dodatnich (mniejszych od 10 6 ) podanych przez użytkownika, wypisze komunikat TAK, jeśli są to liczby zaprzyjaźnione i NIE, w przeciwnym przypadku. c) Liczba doskonała to taka liczba, która jest równa sumie wszystkich swoich dzielników właściwych. Liczby doskonałe zostały wynalezione przez pitagorejczyków. Najmniejszą liczbą doskonałą jest 6 (6 = 1 + 2 + 3). Napisz program, który wypisze wszystkie liczby doskonałe z przedziału (6; 10 000). d) Sprawdzanie (na podstawie definicji), czy liczba jest liczbą doskonałą jest czasochłonne. Spróbuj znaleźć wzory, które pomogą usprawnić ten proces. Sprawdź je na przykładzie wygenerowanych przez Ciebie liczb w poprzednim podpunkcie. Do podpunktu d): Reguła podana przez Euklidesa pozwalająca wyznaczać liczby doskonałe parzyste (nie wiadomo, czy istnieją nieparzyste liczby doskonałe): N = 2 k-1 (2 k - 1), gdzie (2 k - 1) musi być liczbą pierwszą dla k > 1 (naturalnego). Dla k=2, N = 2 1 * (2 2-1) = 2 * 3=6; 2 2-1 jest liczbą pierwszą więc 6 jest liczbą doskonałą. Zadanie 3 Liczba Armstronga (narcystyczna) - n-cyfrowa liczba naturalna, która jest sumą swoich cyfr podniesionych do potęgi n. Przykład: 153 = 1 3 + 5 3 + 3 3 e) Napisz program, który dla danej liczby naturalnej dodatniej (mniejszej od 10 6 ) podanej przez użytkownika, wypisze komunikat TAK, jeśli jest to liczba Armstronga i NIE, w przeciwnym przypadku. f) Uzasadnij stwierdzenie: Istnieje skończona ilość liczb Armstronga.
Do a) można potraktować liczbę jako łańcuch znaków, można umieścić w tablicy kolejne cyfry liczby. Do b) Jeśli x jest liczbą Armstronga, to: 10 n-1 < x < n9 n. Ponieważ 10 n-1 > n9 n dla n > 61, to z powyższych nierówności wnioskujemy, że istnieje skończona ilość liczb Armstronga. Zadanie 4 Wśród metod szyfrowania wyróżniamy metody podstawieniowe (np. Szyfr Cezara) lub przestawieniowe (metoda polegająca na zmianie kolejności liter w szyfrowanym tekście). Zadanie nasze będzie polegało na zaszyfrowaniu tekstu metodą przestawieniową, tzw. metodą płotu, gdzie naszym kluczem szyfrowania będzie liczba płotków. Metodę tą najłatwiej wyjaśnić na przykładzie. Zaszyfrujmy tekst: najbardziej lubię lody czekoladowe. Niech liczba płotów wynosi 3. Proces szyfrowania polega na zapisywaniu pierwszej litery tekstu w pierwszym płotku, drugiej w drugim, trzeciej w trzecim, a gdy braknie płotków, zaczynamy uzupełniać płotki ponownie od pierwszego do ostatniego, i tak do wyczerpania znaków w tekście. Spacje pomijamy. Otrzymujemy płotki: I II III nbdeuedzode aazjblyelo jriliockaw Następnie przepisujemy zawartość pierwszego płotka, za nim drugiego, a następnie trzeciego. Dla naszego tekstu otrzymamy następujący szyfrogram: nbdeuedzodeaazjblyelojriliockaw a) Napisz program, który będzie szyfrował teksty wyżej opisaną metodą. Długość tekstu nie może przekroczyć 100 znaków, a liczbę płotów będzie nie większa niż 10. b) Zaproponuj metodę rozszyfrowywania tak zapisanej wiadomości. Opisz tę metodę. Zadanie 5 Poniżej przestawione zostały pewne ciągi liczbowe (podano po kilka początkowych wyrazów tych ciągów). Dla każdego z tych ciągów podaj rekurencyjną definicję jego elementów, a następnie napisz program, który wyliczy n-ty element tego ciągu (n jest liczbą naturalną dodatnią).
a) Ciąg 1: 2, 4, 6, 8, 10 b) Ciąg 2: 2, 4, 8,1 6, 32, c) Ciąg 3: 1, 2, 6, 24, 120, 720, d) Ciąg 4: 1, 1, 1, 3, 5, 9, 17, 31, e) Ciąg 5: 1, ½, ¼, 1/8, 1/16, f) Zaproponuj własny ciąg, a następnie podaj jego definicję rekurencyjną. Zadanie 6 Funkcje trygonometryczne, choć wywodzą się z pojęć geometrycznych, są rozpatrywane także w oderwaniu od geometrii. W analizie matematycznej są one definiowane, m.in. za pomocą szeregów potęgowych (szeregów Taylora). Wzory te wykorzystywane są do wyliczenia w sposób przybliżony wartości funkcji sinus, cosinus, np. za pomocą komputera. Wartość funkcji sinus można wyliczyć korzystając z następującego wzoru: sin( x) = x- x3 3! + x5 5! x7 7! + Widać, że suma ta jest sumą nieskończoną, dlatego wartość funkcji sinus możemy policzyć tylko z pewną dokładnością. a) Napisz program, który wyliczy wartość funkcji sinus dla x (typu double) podanego przez użytkownika z dokładnością d = 0,0001. Porównaj otrzymany wynik z wartością obliczoną za pomocą funkcji sin(x) z biblioteki cmath. Postaraj się zoptymalizować swój algorytm. b) Napisz program, który wyliczy wartość funkcji cosinus dla x (typu double) podanego przez użytkownika z dokładnością d = 0,0001. Porównaj otrzymany wynik z wartością obliczoną za pomocą funkcji cos(x) z biblioteki cmath. Pamiętaj o optymalizacji programu. cos(x)=1- x2 2! + x5 4! x6 6! + Zadanie 7 W matematyce bardzo często wykorzystywanym pojęciem są macierze. Być może zetknąłeś się z nimi - na przykład przy okazji rozwiązywania układów równań liniowych. Macierz to zbiór wielkości ustawionych w wiersze i kolumny w formie prostokątnej tablicy. Ogólny zapis macierzy polega na ujęciu tej tablicy w nawiasy: Wielkości an, a12, itd. nazywa się elementami (wyrazami) macierzy. Liczbę wierszy i kolumn macierzy m xn nazywa się wymiarem macierzy. Macierz nazywamy kwadratową, jeżeli liczba wierszy równa się liczbie kolumn. Napisz program, który wypełni tablicę kwadratową naturalnymi liczbami losowymi z przedziału (0; 100), następnie wypisze elementy tej tablicy i obliczy tzw. ślad macierzy - czyli sumę elementów na przekątnej głównej macierzy, czyli od a11 do amn Przyjmij wymiar macierzy 5 x 5.
Zadanie 8 Jest wiele różnych typów macierzy, np. symetryczne, diagonalne, elementarne, jednostkowe. Znajdź w Internecie definicję dowolnego typu macierzy, a następnie napisz program, który sprawdzi, czy wy-generowana przez Ciebie macierz jest macierzą tego typu. Definicje różnych typów macierzy można znaleźć na przykład na stronach: http://pl.wikipedia.org/wiki/macierze http://www.math.edu.pl/macierze Zadanie 9 Odwrotna notacja polska (ONP), zwana również notacją beznawiasową, znajduje swoje zastosowanie w tłumaczeniach wyrażeń przez kompilator, dzięki czemu, ich wartość może być obliczana podczas jednokrotnego przeglądania znaków wyrażenia (bez cofania się). W notacji tej, znak wykonywanej operacji umieszczony jest po operandach, a nie pomiędzy nimi - jak w konwencjonalnym zapisie algebraicznym. Np. wyrażenie: 2 + 3 w ONP przyjmuje postać: 2 3 +, a wyrażenie 2 + 4 * 2-1 w ONP przyjmuje postać: 2 4 2 * + 1 - (oczywiście priory tety operatorów są takie same jak w przypadku obliczania wartości wyrażenia na matematyce ). Napisz program, który będzie czytał wyrażenie podane w ONP i obliczy jego wartość. UWAGA: Przyjmij, że wyrażenie może być zbudowane ze znaków trzech działań: +, *, -, / (dzielenie całkowite), a argumentami mogą być cyfry od 0 do 9. c.d.n.