Dobry wstęp

RHfnrg0BDnx7O1
Film opisujący algorytmy na liczbach w języku Java.

Liczby pierwsze

Na początek przyjrzyjmy się grupie liczb nazywanych pierwszymi. Należą do nich np.:

  • 2,

  • 3,

  • 5,

  • 7,

  • 11,

  • 13,

  • 17.

Na pierwszy rzut oka trudno zauważyć jakąkolwiek właściwość, która byłaby wspólna dla wszystkich wymienionych wyżej liczb. Łączy je jednak pewna zależność dotycząca ich dzielników.

Przypomnijmy więc – dana liczba jest liczbą pierwszą, jeśli spełnia dwa warunki:

  • jest liczbą naturalną większą od 1,

  • posiada tylko dwa dzielniki: 1 oraz samą siebie.

Problem 1

Spróbujmy napisać algorytm w postaci pseudokodu, który sprawdzi, czy dana liczba jest liczbą pierwszą.

Specyfikacja:

Dane:

  • liczba – liczba do sprawdzenia; liczba naturalna

Wynik:

Program wypisuje komunikat Liczba jest liczbą pierwszą lub Liczba nie jest liczbą pierwszą.

Linia 1. liczba ← wprowadź liczbę naturalną. Linia 2. czyPierwsza ← prawda. Linia 4. jeżeli liczba otwórz nawias ostrokątny znak równości 1 dwukropek. Linia 5. czyPierwsza ← fałsz. Linia 6. w przeciwnym razie dwukropek. Linia 7. i ← 2. Linia 8. dopóki i asterysk i otwórz nawias ostrokątny znak równości liczba dwukropek. Linia 9. jeżeli liczba mod i znak równości 0 dwukropek. Linia 10. czyPierwsza ← fałsz. Linia 11. przerwij pętlę. Linia 12. i ← i plus 1. Linia 14. jeżeli czyPierwsza znak równości prawda dwukropek. Linia 15. wypisz cudzysłów Liczba jest liczbą pierwszą cudzysłów. Linia 16. w przeciwnym razie dwukropek. Linia 17. wypisz cudzysłów Liczba nie jest liczbą pierwszą cudzysłów.

Zaczynamy od wprowadzenia liczby, która ma zostać sprawdzona, i zapisania jej w zmiennej liczba. Następnie deklarujemy zmienną logiczną czyPierwsza, której wartość będzie wskazywać, czy dana liczba spełnia warunki liczby pierwszej, czy też nie.

Kolejnym krokiem jest sprawdzenie w instrukcji warunkowej, czy wprowadzona liczba jest mniejsza lub równa 1. Jeśli ten warunek jest spełniony, dana liczba na pewno nie będzie liczbą pierwszą. Dlatego zmiennej logicznej czyPierwsza zostaje przypisana wartość fałsz.

W przeciwnym przypadku następuje sprawdzenie dzielników danej liczby z przedziału 2 , liczba . Jeżeli w zadanym przedziale zostanie znaleziony dzielnik, to liczba ta nie jest liczbą pierwszą. Sprawdzenie odbywa się w instrukcji warunkowej wewnątrz pętli. Wyrażenie mod oznacza operację modulo (w wielu językach programowania oznaczana symbolem %), czyli zwraca resztę z dzielenia liczby przez i.

R11XS9PC2OFJS

Jeśli nie udało Ci się rozwiązać zadania skorzystaj z poniższego kodu.  

Uwaga! W programie użyto klasy Scanner oraz obiektów klasy Skaner. Kond przed uruchomieniem na stronie należy zmodyfikować.

Ważne!

W programie użyto klasy Scanner oraz obiektów klasy Skaner. Kond przed uruchomieniem na stronie należy zmodyfikować.

Linia 1. import java kropka util kropka Scanner średnik. Linia 3. public class LiczbaPierwsza otwórz nawias klamrowy. Linia 4. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 5. int liczbaTest znak równości 0 średnik. Linia 6. boolean czyPierwsza znak równości true średnik. Linia 8. Scanner sc znak równości new Scanner otwórz nawias okrągły System kropka in zamknij nawias okrągły średnik. Linia 9. System kropka out kropka println otwórz nawias okrągły cudzysłów Podaj liczbę do sprawdzenia cudzysłów zamknij nawias okrągły średnik. Linia 10. liczbaTest znak równości sc kropka nextInt otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 12. if otwórz nawias okrągły liczbaTest znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 13. czyPierwsza znak równości false średnik. Linia 14. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 15. int i znak równości 2 średnik. Linia 16. while otwórz nawias okrągły i asterysk i znak równości znak równości liczbaTest zamknij nawias okrągły otwórz nawias klamrowy. Linia 17. if otwórz nawias okrągły liczbaTest procent i znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 18. czyPierwsza znak równości false średnik. Linia 19. break średnik. Linia 20. zamknij nawias klamrowy. Linia 21. i plus plus średnik. Linia 22. zamknij nawias klamrowy. Linia 23. zamknij nawias klamrowy. Linia 25. if otwórz nawias okrągły czyPierwsza znak równości znak równości false zamknij nawias okrągły otwórz nawias klamrowy. Linia 26. System kropka out kropka println otwórz nawias okrągły cudzysłów Liczba cudzysłów plus liczbaTest plus cudzysłów nie jest liczbą pierwszą cudzysłów zamknij nawias okrągły średnik. Linia 27. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 28. System kropka out kropka println otwórz nawias okrągły cudzysłów Liczba cudzysłów plus liczbaTest plus cudzysłów jest liczbą pierwszą cudzysłów zamknij nawias okrągły średnik. Linia 29. zamknij nawias klamrowy. Linia 30. zamknij nawias klamrowy. Linia 32. zamknij nawias klamrowy.
Już wiesz

Aby liczbę naturalną można było nazwać pierwszą, musi ona mieć tylko dwa dzielniki: 1 i samą siebie oraz jej wartość ma być większa od 1.

Poniżej zostało wypisanych kilka przykładowych liczb pierwszych:

  • 2, 3, 5, 7, 11, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83

Słownik

dzielnik
dzielnik

liczba, która dzieli bez reszty daną liczbę całkowitą

dzielniki właściwe
dzielniki właściwe

dzielniki danej liczby mniejsze od niej samej