Przykład sprawdzenia, czy liczba całkowita (wprowadzona przez użytkownika) jest liczbą pierwszą, czy nie przy użyciu pętli for i instrukcji if… else.
Aby zrozumieć ten przykład, powinieneś znać następujące tematy programowania w języku C ++:
- C ++ if, if… else i Nested if… else
- C ++ dla pętli
- Instrukcja break and continue w języku C ++
Dodatnia liczba całkowita, która jest podzielna tylko przez 1 i sama jest znana jako liczba pierwsza.
Na przykład: 13 to liczba pierwsza, ponieważ jest podzielna tylko przez 1 i 13, ale 15 nie jest liczbą pierwszą, ponieważ jest podzielna przez 1, 3, 5 i 15.
Uwaga: 0 i 1 nie są liczbami pierwszymi.
Przykład: Sprawdź liczbę pierwszą
#include using namespace std; int main() ( int i, n; bool isPrime = true; cout <> n; // 0 and 1 are not prime numbers if (n == 0 || n == 1) ( isPrime = false; ) else ( for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) ) if (isPrime) cout << n << " is a prime number"; else cout << n << " is not a prime number"; return 0; )
Wynik
Wpisz dodatnią liczbę całkowitą: 29 29 to liczba pierwsza.
Ten program pobiera dodatnią liczbę całkowitą od użytkownika i przechowuje ją w zmiennej n.
Zauważ, że zmienna boolowska isPrime jest inicjalizowana true
na początku programu.
Ponieważ 0 i 1 nie są liczbami pierwszymi, najpierw sprawdzamy, czy wprowadzona liczba jest jedną z tych liczb, czy nie. Jeśli numer wejścia wynosi 0 lub 1 , to wartość isPrime jest ustawiana na false
.
W przeciwnym razie początkowa wartość isPrime pozostaje niezmieniona i for
wykonywana jest pętla, która sprawdza, czy liczba wprowadzona przez użytkownika jest doskonale podzielna przez i, czy nie.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
for
Pętli trwa od i == 2
się i <= n / 2
i zwiększa wartość zmiennej i o 1 w każdym powtórzeniu.
Pętla kończy się na, i == n / 2
ponieważ nie możemy znaleźć żadnego czynnika dla n poza liczbą n / 2
. Zatem wszelkie kolejne iteracje n / 2
są zbędne.
Jeśli liczba wprowadzona przez użytkownika jest całkowicie podzielna przez i, to isPrime jest ustawiana na, false
a liczba nie będzie liczbą pierwszą.
Ale jeśli liczba wejściowa nie jest doskonale podzielna przez i w całej pętli, oznacza to, że liczba wejściowa jest podzielna tylko przez 1 i samą liczbę.
Zatem podana liczba jest liczbą pierwszą.
W przypadku n == 2
The for
pętla nie uruchamia a wartość isPrime pozostaje true
.