Program w C ++ do sprawdzania, czy liczba jest pierwsza, czy nie

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 truena 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 forwykonywana 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; ) ) 

forPętli trwa od i == 2się i <= n / 2i zwiększa wartość zmiennej i o 1 w każdym powtórzeniu.

Pętla kończy się na, i == n / 2ponieważ nie możemy znaleźć żadnego czynnika dla n poza liczbą n / 2 . Zatem wszelkie kolejne iteracje n / 2są zbędne.

Jeśli liczba wprowadzona przez użytkownika jest całkowicie podzielna przez i, to isPrime jest ustawiana na, falsea 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 == 2The forpętla nie uruchamia a wartość isPrime pozostaje true.

Interesujące artykuły...