R78GBM2ZZ46P3
Grafika przedstawia namalowane kredkami cyfry w różnych kolorach oraz różnej wielkości.

I_P_W14_M03 Czy liczba jest liczbą pierwszą?

Źródło: Gerald, dostępny w internecie: pixabay.com, domena publiczna.

Liczby bliźniacze

Inną interesującą grupą są liczby bliźniacze. Są to pary liczb pierwszych, których różnica jest równa 2. Przykładami takich par będą:

  • 3 i 5,

  • 5 i 7,

  • 11 i 13,

  • 17 i 19,

  • 857 i 859.

Problem 1

Napiszmy algorytm w postaci pseudokodu, który sprawdzi, czy dane dwie liczby liczba1 oraz liczba2 są liczbami bliźniaczymi.

Specyfikacja:

Dane:

  • liczba1 – liczba do sprawdzenia; liczba naturalna

  • liczba2 – liczba do sprawdzenia; liczba naturalna

Wynik:

Program wypisuje komunikat Liczby są parą liczb bliźniaczych lub Liczby nie są parą liczb bliźniaczych.

Oto zapisany za pomocą pseudokodu algorytm sprawdzający, czy dwie zadane liczby są liczbami bliźniaczymi:

Linia 1. funkcja czyPierwsza otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 2. jeżeli liczba otwórz nawias ostrokątny znak równości 1 dwukropek. Linia 3. zwróć fałsz. Linia 4. w przeciwnym razie dwukropek. Linia 5. i ← 2. Linia 6. dopóki i asterysk i otwórz nawias ostrokątny znak równości liczba dwukropek. Linia 7. jeżeli liczba mod i znak równości 0 dwukropek. Linia 8. zwróć fałsz. Linia 9. i ← i plus 1. Linia 10. zwróć prawda. Linia 12. funkcja wartośćBezwzględna otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 13. jeżeli liczba otwórz nawias ostrokątny 0 dwukropek. Linia 14. zwróć minus liczba. Linia 15. w przeciwnym razie dwukropek. Linia 16. zwróć liczba. Linia 18. liczba1 ← wprowadź liczbę. Linia 19. liczba2 ← wprowadź liczbę. Linia 21. jeżeli wartośćBezwzględna otwórz nawias okrągły liczba1 minus liczba2 zamknij nawias okrągły znak równości 2 dwukropek. Linia 22. jeżeli czyPierwsza otwórz nawias okrągły liczba1 zamknij nawias okrągły znak równości prawda dwukropek. Linia 23. jeżeli czyPierwsza otwórz nawias okrągły liczba2 zamknij nawias okrągły znak równości prawda dwukropek. Linia 24. wypisz cudzysłów Liczby są parą liczb bliźniaczych cudzysłów. Linia 25. w przeciwnym razie dwukropek. Linia 26. wypisz cudzysłów Liczby nie są parą liczb bliźniaczych cudzysłów. Linia 27. w przeciwnym razie dwukropek. Linia 28. wypisz cudzysłów Liczby nie są parą liczb bliźniaczych cudzysłów. Linia 29. w przeciwnym razie dwukropek. Linia 30. wypisz cudzysłów Liczby nie są parą liczb bliźniaczych cudzysłów.

Funkcja czyPierwsza() sprawdza, czy dana liczba jest liczbą pierwszą. Jeśli tak, zwraca wartość prawda. Wykorzystuje ona algorytm przedstawiony w sekcji powyżej.

Funkcja wartośćBezwzględna() zwraca wartość bezwzględną z danej liczby.

Na początku sprawdzamy, czy różnica między liczbami wynosi 2. Jeżeli tak, to sprawdzamy, czy liczby są liczbami pierwszymi. W takim wypadku wiemy, że podane liczby są liczbami bliźniaczymi.

Teraz czas na implementację algorytmu w języku Python. Skorzystamy z funkcji czy_pierwsza(n) zdefiniowanej w poprzedniej sekcji.

Linia 1. from math import sqrt. Linia 2. def czy podkreślnik pierwsza otwórz nawias okrągły n zamknij nawias okrągły dwukropek. Linia 3. cudzysłów cudzysłów cudzysłów. Linia 4. Funkcja sprawdza przecinek czy liczba n jest liczbą pierwszą kropka. Linia 5. Liczba pierwsza to taka przecinek która ma dokładnie dwa dzielniki dwukropek 1 i samą siebie kropka. Linia 6. cudzysłów cudzysłów cudzysłów. Linia 7. kratka liczby mniejsze niż 2 nie są pierwsze. Linia 8. if n otwórz nawias ostrokątny 2 dwukropek. Linia 9. return False. Linia 11. kratka 2 jest pierwsza. Linia 12. if n znak równości znak równości 2 dwukropek. Linia 13. return True. Linia 15. kratka liczby parzyste większe od 2 nie są pierwsze. Linia 16. if n procent 2 znak równości znak równości 0 dwukropek. Linia 17. return False. Linia 19. kratka sprawdzamy dzielniki tylko do pierwiastka z n. Linia 20. kratka bo jeśli n znak równości a asterysk b przecinek to przynajmniej jeden z czynników ≤ √n. Linia 21. p znak równości int otwórz nawias okrągły sqrt otwórz nawias okrągły n zamknij nawias okrągły zamknij nawias okrągły. Linia 22. for i in range otwórz nawias okrągły 3 przecinek p plus 1 przecinek 2 zamknij nawias okrągły dwukropek kratka sprawdzamy tylko liczby nieparzyste. Linia 23. if n procent i znak równości znak równości 0 dwukropek. Linia 24. return False. Linia 26. return True. Linia 29. def liczby podkreślnik blizniacze otwórz nawias okrągły a przecinek b zamknij nawias okrągły dwukropek. Linia 30. cudzysłów cudzysłów cudzysłów. Linia 31. Funkcja sprawdza przecinek czy dwie liczby są bliźniacze kropka. Linia 32. Warunki dwukropek. Linia 33. 1 kropka Obie liczby muszą być pierwsze kropka. Linia 34. 2 kropka Różnica między nimi musi wynosić 2 kropka. Linia 35. cudzysłów cudzysłów cudzysłów. Linia 36. if czy podkreślnik pierwsza otwórz nawias okrągły a zamknij nawias okrągły and czy podkreślnik pierwsza otwórz nawias okrągły b zamknij nawias okrągły and abs otwórz nawias okrągły a minus b zamknij nawias okrągły znak równości znak równości 2 dwukropek. Linia 37. return True. Linia 38. return False. Linia 41. kratka minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 42. kratka Program główny. Linia 43. kratka minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 45. x znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj pierwszą liczbę dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 46. y znak równości int otwórz nawias okrągły input otwórz nawias okrągły cudzysłów Podaj drugą liczbę dwukropek cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 48. if liczby podkreślnik blizniacze otwórz nawias okrągły x przecinek y zamknij nawias okrągły dwukropek. Linia 49. print otwórz nawias okrągły f cudzysłów Liczby otwórz nawias klamrowy x zamknij nawias klamrowy i otwórz nawias klamrowy y zamknij nawias klamrowy są bliźniacze kropka cudzysłów zamknij nawias okrągły. Linia 50. else dwukropek. Linia 51. print otwórz nawias okrągły f cudzysłów Liczby otwórz nawias klamrowy x zamknij nawias klamrowy i otwórz nawias klamrowy y zamknij nawias klamrowy nie są bliźniacze kropka cudzysłów zamknij nawias okrągły.