Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Na czym polega rozkład na czynniki pierwsze?

Każda liczba całkowita większa od 1 jest liczbą pierwszą albo liczbą złożoną.

Liczby pierwsze mają tylko dwa dzielniki: 1 oraz samą siebie. Z kolei liczba złożona jest taką liczbą, którą można przedstawić jako iloczyn innych liczb pierwszych. Dla przykładu: zapiszemy kilka liczb naturalnych jako iloczyn liczb pierwszych. I tak:

2 – jest liczbą pierwszą,

3 – jest liczbą pierwszą,

4 – liczbą złożoną, którą możemy przedstawić jako 2 * 2,

5 – jest liczbą pierwszą,

6 – liczbą złożoną, którą możemy przedstawić jako 2 * 3,

7 – jest liczbą pierwszą,

8 – liczbą złożoną, którą możemy przedstawić jako 2 * 2 * 2,

...

Dla małych liczb taki rozkład jest stosunkowo prosty. Natomiast dla większych znalezienie czynników pierwszych, bez znajomości konkretnej metody, nie jest już takie łatwe.

Metoda rozkładu liczby na czynniki pierwsze

Omówimy metodę, która znacznie ułatwia znajdowanie czynników pierwszych każdej liczby. Rozpoczynamy od zapisania liczby, którą chcemy rozłożyć na czynniki pierwsze w sąsiedztwie długiej, pionowej linii.

R17qnb3eNr5cV
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Następnie bierzemy najmniejszą liczbę pierwszą, czyli 2, i sprawdzamy, czy 136 jest podzielne przez 2.

136÷2=68

Liczba 136 jest podzielna przez 2, więc po prawej stronie linii zapisujemy 2, a po lewej, poniżej naszej liczby, zapisujemy wynik dzielenia.

R1CxvoRc44ZVU
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Powstałą liczbę dzielimy przez 2 tak długo jak długo 2 jest jej podzielnikiem Czy 68 jest podzielne przez 2?

68÷2=34

Tak. Zapisujemy więc liczbę 2 po prawej stronie, a wynik z dzielenia po lewej stronie.

R1OHadrNXjqA5
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Ponownie sprawdzamy, czy liczba po lewej stronie jest podzielna przez 2.

34÷2=17

Tak. Powtarzamy więc czynność.

RB0aJKIZy0QAj
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Czy liczba 17 jest podzielna przez 2?

17÷2=8.5

Nie jest. Przestajemy więc dzielić przez 2 i przechodzimy do kolejnej liczby pierwszej, jaką jest 3. Czy 17 dzieli się przez 3? Sprawdźmy.

17÷3=5.666666666...

Niestety nie. Kontynuujemy więc przechodzenie do kolejnych liczb pierwszych, aż znajdziemy taką, która będzie dzielnikiem naszej liczby. Ponieważ liczba 17 jest liczbą pierwszą, jedynym takim dzielnikiem będzie liczba 17.

17÷17=1

Zapisujemy więc liczbę 17 po prawej stronie linii oraz liczbę 1 po lewej stronie.

RH6YLOLxZVErA
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Nasza liczba po lewej stronie osiągnęła wartość 1. W tym momencie nasz algorytm kończy swoje działanie. Liczby, które znajdują się po prawej stronie kreski, są czynnikami pierwszymi liczby 136. Chcąc upewnić się, że nie popełniliśmy błędu, możemy obliczyć ich iloczyn i sprawdzić, czy wynik będzie równy 136.

2×2×2×17=136

Wszystko się zgadza, algorytm dał poprawny wynik. Chcąc napisać program komputerowy, który będzie rozkładał liczby na czynniki pierwsze, zapiszemy algorytm w postaci pseudokodu. 

Algorytm rozkładu liczby na czynniki pierwsze

Spróbujmy napisać w pseudokodzie algorytm rozkładający liczbę na czynniki pierwsze, wzorując się na algorytmie opisanym powyżej. Pierwszym krokiem będzie inicjacja zmiennej, która będzie przechowywać liczbę do sprawdzenia.

Linia 1. liczbaDoSprawdzenia znak równości liczba naturalna podana przez użytkownika.

Będziemy również potrzebowali zmiennej, która będzie przechowywać liczbę pierwszą, znajdującą się w danym momencie po prawej stronie linii. Nazwiemy ją pierwsza i zainicjalizujemy liczbą 2, gdyż jest to najmniejsza liczba pierwsza.

Linia 1. liczbaDoSprawdzenia znak równości liczba naturalna podana przez użytkownika. Linia 2. pierwsza znak równości 2.

Następnie będziemy dzielić liczbę po lewej stronie linii, aż do momentu, w którym jej wartość wyniesie 1. Do tego celu użyjemy pętli whilepętla whilewhile (w pseudokodzie dopóki).

Linia 1. liczbaDoSprawdzenia znak równości liczba naturalna podana przez użytkownika. Linia 2. pierwsza znak równości 2. Linia 4. dopóki liczbaDoSprawdzenia zamknij nawias ostrokątny 1 wykonuj dwukropek.

Moglibyśmy użyć warunku liczbaDoSprawdzenia !=operator !=!= 1, ale starajmy się zawsze używać nierówności, jeżeli jest tylko taka możliwość. Jeżeli z jakiegoś powodu liczbaDoSprawdzenia ominęłaby wartość 1, pętla nigdy nie zakończyłaby działania  (w kolejnych e‑materiałach poznasz takie przypadki). W przypadku nierówności, nawet jeżeli nasza zmienna ominie wartość 1, pętla zakończy działanie.

Kolejnym krokiem jest dzielenie liczby po lewej stronie linii przez liczbę pierwszą, zapisaną w zmiennej pierwsza, dopóki jest ona jej dzielnikiem. Aby to osiągnąć, użyjemy kolejnej pętli dopóki.

Linia 1. liczbaDoSprawdzenia znak równości liczba naturalna podana przez użytkownika. Linia 2. pierwsza znak równości 2. Linia 4. dopóki liczbaDoSprawdzenia zamknij nawias ostrokątny 1 wykonuj dwukropek. Linia 5. dopóki liczbaDoSprawdzenia mod pierwsza znak równości znak równości 0 wykonuj dwukropek.

Jeżeli liczba pierwsza jest dzielnikiem liczby do sprawdzenia, musimy wypisać do konsoli liczbę pierwsza, ponieważ jest ona czynnikiem pierwszym naszej liczby, a następnie podzielić liczbaDoSprawdzenia przez pierwsza.

Linia 1. liczbaDoSprawdzenia znak równości liczba naturalna podana przez użytkownika. Linia 2. pierwsza znak równości 2. Linia 4. dopóki liczbaDoSprawdzenia zamknij nawias ostrokątny 1 wykonuj dwukropek. Linia 5. dopóki liczbaDoSprawdzenia mod pierwsza znak równości znak równości 0 wykonuj dwukropek. Linia 6. wypisz pierwsza. Linia 7. liczbaDoSprawdzenia znak równości liczbaDoSprawdzenia prawy ukośnik pierwsza.

Ostatnim krokiem jest przejście do kolejnej liczby, jeżeli liczba pierwsza nie jest dzielnikiem liczbaDoSprawdzenia.

Linia 1. liczbaDoSprawdzenia znak równości liczba naturalna podana przez użytkownika. Linia 2. pierwsza znak równości 2. Linia 4. dopóki liczbaDoSprawdzenia zamknij nawias ostrokątny 1 wykonuj dwukropek. Linia 5. dopóki liczbaDoSprawdzenia mod pierwsza znak równości znak równości 0 wykonuj dwukropek. Linia 6. wypisz pierwsza. Linia 7. liczbaDoSprawdzenia znak równości liczbaDoSprawdzenia prawy ukośnik pierwsza. Linia 9. pierwsza znak równości kolejna liczba pierwsza.

Słownik

operator !=
operator !=

operator, który zwraca wartość true, jeżeli dwa elementy nie są sobie równe oraz wartość false, jeżeli są sobie równe

pętla while
pętla while

pętla, która wykonuje instrukcje w niej zawarte tak długo, jak zadane jej wyrażenie logiczne jest prawdziwe