Lecţia 6 - Algoritmi Pentru Prelucrarea Cifrelor, CMMDC, Divizori Primi
Lecţia 6 - Algoritmi Pentru Prelucrarea Cifrelor, CMMDC, Divizori Primi
Lecţia 6 - Algoritmi Pentru Prelucrarea Cifrelor, CMMDC, Divizori Primi
Clasa a V-a
nrcif = 0; nrcif = 0;
if (n == 0) nr = 1; do{
while (n > 0) { nrcif++;
nrcif++; n = n / 10;
n = n / 10; } while (n > 0);
}
while (n > 9)
n = n / 10;
prima_cifra = n;
c. determinarea oglinditului lui n (numrul care conine cifrele lui n n ordine invers)
oglindit = 0;
while (n > 0) {
cif = n % 10;
oglindit = oglindit * 10 + cif;
n = n / 10;
}
ATENIE! La oglindirea unui numr terminat cu cifre de 0, aceste cifre 0 se pierd deoarece devin zerouri
nesemnificative, n faa primei cifre a oglinditului.
//determinm cea mai mare putere a lui 10, care este mai mic sau egal dect numrul n
p = 1;
while (p * 10 <= n) p = p * 10;
while (n > 0) {
cif = n / p;
//prelucreaza cif conform cerintelor problemei
n = n % p;
}
1
Lecia 6 Algoritmi pentru prelucrarea cifrelor, cmmdc, divizori primi
Clasa a V-a
nrap = 0; nrap = 0;
do{ if (n == 0 && k == 0) nrap = 1;
cif = n % 10; while (n>0)
if (cif == k) nrap++; { cif = n % 10;
n = n / 10; if (cif == k) nrap++;
} while (n>0); n = n / 10; }
nrnou = 0;
p = 1;
do{
cif = n % 10;
if (cif % 2 == 0)
{
nrnou = nrnou + p * cif;
p = p * 10;
}
n = n / 10;
} while (n>0);
Obs. Se construiete n variabila nrnou numrul care conine doar cifrele care NU sunt de eliminat, pstrnd
ordinea lor n numrul iniial.
Probleme propuse
1. Se citeste un numar natural n de cel mult 15 cifre. Sa se afiseze elimine din n cifrele impare apoi sa se
verifice daca numarul rezultat este palindrom (este egal cu oglinditul). Se va afisa numarul rezultat si
valoarea 1 daca e palindrom sau 0 daca nu.
Ex: pentru n=245352102492, se vor afisa 2420242 1
2. Se citesc pe rand n numere naturale. Sa se afiseze numarul de cifre pare continute in toate aceste numere.
3. Se citesc pe rand n numere naturale nenule. Sa se afiseze sirul format cu prima cifra a fiecarui numar dat.
4. http://pbinfo.ro:
1. Se citete n un numar natural nenul. Sa se determine cel mai mic numr care are aceeai factori primi n
descompunere ca i n.
4 2
Ex: pentru n=720, se va afisa 30 (30=2 * 3 * 5, 720=2 * 3 * 5)
2. Se citesc 2 numere naturale nenule a, b (1<a<b<1000), sa se afiseze in ordine crescatoare numerele din
intervalul [a,b] care au cel putin 3 divizori primi. Daca nu exista astfel de valori, se va afisa 0.
3. Se citesc pe rand n numere naturale nenule, sa se afiseze numerele care au doar divizori primi la putere
impara.
Ex. n=5 si numerele 24 16 9 17 28 se vor afisa 24 17 28
2
Lecia 6 Algoritmi pentru prelucrarea cifrelor, cmmdc, divizori primi
Clasa a V-a
CMMDC, CMMMC
Cel mai mare divizor comun (CMMDC) a dou numere a i b
rest = a % b;
while (rest > 0)
{
a = b;
b = rest;
rest = a% b;
}
cmmdc = b;
CMMMC = (a * b) / CMMDC
Probleme propuse
1. Se citesc pe rand n numere naturale nenule. Sa se determine cmmdc pentru mininul si maximul din sir.
Ex. N=5 si valorile 12 8 9 28 17. Se va afisa 4 (cmmdc(8, 28)=4)
2. Se citesc K un numar natural nenul apoi se citesc pe rand n numere naturale nenule. Sa se afiseze numerele prime
cu K sau valoarea 0, daca nu exista astfel de numere.
Ex. K=15, N=5 si valorile 12 8 9 28 17. Se vor afisa 8 28 17
3. Se citesc a si b doua numere natural nenule reprezentand lungimile laturilor unei foi albe. Foaia trebuie impartita
in patratele de laturi egale, fara sa ramana resturi. Sa se determine latura maxima a unui patratel, numarul total
de linii orizontale si verticale care trebuie trasate (pe marginile foii nu se traseaza linii) si numarul de patratele
care se formeaza.
Ex: a=20, b=36. Se vor afisa valorile 4 12 45 (latura patratelului=4, numarul de linii pe latura a este 4 iar numarul
de linii pe latura b este 8, deci 4+8=12, numarul total de patratele este 45)
Tema
http://pbinfo.ro problemele: AfisareDivizoriComuni, Divizorii Oglinditului, Oglindit4, Cmmdc2, Pavare,
SumaCifreNrPrime, SumCifPrim
Trimitei soluiile pe adresa mirela.tibu@gmail.com sub forma unei arhive denumit cu numele vostru.
Creai arhiva urmnd paii:
1. Creai un folder cu numelevostru_tema6
2. Copiati una cte una sursele main.cpp n acest folder i redenumii-le cu numele problemei
3. Arhivai acest folder pastrand numele arhivei identic cu al folderului
4. Ataai arhiva la email-ul pe care l trimitei la adresa mirela.tibu@gmail.com
3
Lecia 6 Algoritmi pentru prelucrarea cifrelor, cmmdc, divizori primi
Clasa a V-a