Příklad ke kontrole, zda lze celé číslo (zadané uživatelem) vyjádřit jako součet dvou prvočísel všech možných kombinací s použitím funkcí.
Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata C ++:
- C ++ pro smyčku
- C ++ if, if … else a Nested if … else
- Funkce C ++
- Typy uživatelsky definovaných funkcí v C ++
Tento program přebírá od uživatele kladné celé číslo a kontroluje, zda lze toto číslo vyjádřit jako součet dvou prvočísel.
Pokud lze číslo vyjádřit jako součet dvou prvočísel, výstup ukazuje kombinaci prvočísel.
K provedení tohoto úkolu je vytvořena uživatelem definovaná funkce ke kontrole prvočísla.
Příklad: Zkontrolujte, zda lze číslo vyjádřit jako součet dvou prvočísel
#include using namespace std; bool checkPrime(int n); int main() ( int n, i; bool flag = false; cout <> n; for(i = 2; i <= n/2; ++i) ( if (checkPrime(i)) ( if (checkPrime(n - i)) ( cout << n << " = " << i << " + " << n-i << endl; flag = true; ) ) ) if (!flag) cout << n << " can't be expressed as sum of two prime numbers."; return 0; ) // Check prime number bool checkPrime(int n) ( int i; bool isPrime = true; // 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; ) ) ) return isPrime; )
Výstup
Zadejte kladné celé číslo: 34 34 = 3 + 31 34 = 5 + 29 34 = 11 + 23 34 = 17 + 17
V tomto programu používáme checkPrime()
funkci ke kontrole, zda je číslo prvočíslo nebo ne.
V main()
, vezmeme číslo od uživatele a uložíme jej do proměnné n.
Také inicializujeme bool
proměnný příznak na false
. Tuto proměnnou používáme k určení, zda lze vstupní číslo vyjádřit jako součet dvou prvočísel.
Poté iterujeme smyčku od i = 2
do i = n/2
. V každé iteraci kontrolujeme, zda i je prvočíslo nebo ne.
Pokud je i prvočíslo, zkontrolujeme, zda n - i je prvočíslo nebo ne.
Pokud n - i je také prvočíslo, pak víme, že n lze vyjádřit jako součet dvou prvočísel i a n - i.
Výsledek tedy vytiskneme na obrazovku a změníme hodnotu příznaku na true
. Jinak vlajka zůstane false
.
Tento proces pokračuje, dokud smyčka neskončí.
Pokud je příznak stále false
, pak víme, že n nelze vyjádřit jako součet dvou prvočísel, a vytiskneme tuto zprávu na obrazovku.