NU TREBUIE REZOLVAT COMPLET..DOAR SA MI SPUNETI IDEEA DE REZOLVARE LA
PUNCTUL B! DAU COROANA
Un număr n se numeşte extraprim dacă atât el, cât şi orice număr obţinut prin permutarea
cifrelor lui n, sunt numere prime. De exemplu, numărul 113 este un număr extraprim
deoarece 113, 311, 131 sunt numere prime.
a) Scrieţi definiţia completă a unui subprogram f, cu un parametru, subprogram care:
- primeşte prin intermediul parametrului a un număr natural cu cel mult 3 cifre (a>1)
- returnează suma tuturor exponenţilor din descompunerea în factori primi a valorii
parametrului a.
Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*32
*5 şi
1+2+1=4. (4p.)
b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n, 2≤n≤999 şi,
folosind apeluri utile ale subprogramului f, verifică dacă n este un număr extraprim. În caz
afirmativ, programul afişează pe ecran mesajul DA, în caz contrar afişând mesajul NU.
Răspunsuri la întrebare
Răspuns de
0
Răspuns:
Subprogramul de la punctul a trebuie sa returneze 0 daca parametrul de intrare este numar prim.
Apelezi subprogramul f pentru fiecare permutare a cifrelor lui n.
Daca toate rezultatele returnate sunt = 0, atunci numarul este extraprim.
Daca macar unul din rezultatele returnate de f este ≠ 0, atunci numarul nu este extraprim si poti afisa imediat NU.
Explicație:
Singura varianta flexibila in cazul in care (cumva) ai si 0 ramane cea cu vectorul, prima metoda data de mine mai sus.
Dar nu cred ca o sa gasesti astfel de probleme.
12045
20451
4512
45120
51204
Alte întrebări interesante
Geografie,
8 ani în urmă
Franceza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
- Folosind vectori : descompui numarul in cifre si salvezi fiecare cifra intr-o pozitie din vector v[]. Cu un for i de la 1 la numarul de cifre parcurgi permutarile posibile iar cu alt for j de la i la numarul de cifre (si apoi iar de la 1 pana la i-1) consturuiesti permutarea (permutare = permutare*10 + v[j])