Documente Academic
Documente Profesional
Documente Cultură
ALGORITMI ELEMENTARI
Dumitru Gabriel
Clasa 9A
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
CUPRINS
1. Algoritm de interschimbare a doua variabile
2. Algoritm PENTRU determinarea minimului/maximului
3. Algoritm PENTRU prelucrarea cifrelor unui număr
3.1. Algoritmul pentru extragerea cifrelor
3.2. algoritmul pentru compunerea unui număr din cifrele sale
3.3. algoritmul pentru determinarea inversului unui număr
4. Algoritm PENTRU calcularea cmmdc
5. algoritm pentru testarea unui număr prim
6. Algoritm PENTRU PRELUCRAREA DIVIZORILOR
UNUI NR
6.1. ALGORITM PTR afișarea DIVIZORILOR PROPRII
6.2. Algoritm pentru afișarea divizorilor primi
7. Algoritm pentru conversii in sistem de numerație
7.1. ALGORITM PTR CONVERSIA BAZA 10 BAZA q
7.2. ALGORITM PTR CONVERSIA BAZA Q BAZA 10
8. algoritmi pentru generarea sirurilor recurente
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
V1. Interschimbarea a doua variabile (x,y) prin folosirea unei variabile interne (aux), variabila intermediara
se folosește pentru salvarea valorii care se distruge
V2. Interschimbarea valorilor a doua variabile a si b fără folosirea unei variabile intermediare se folosesc
identitățile matematice, a=(a-b)+b si b=((a-b)+b)-(a-b)
V1 V2
real: x,y,aux; real: a,b;
început; început
citește x,y; citește a,b;
aux y; a a-b;
xy; b a+b;
yaux; a b-a
scrie x,y; // (cu valori interschimbare) scrie a,b; // (cu valori interschimbate)
sfârșit. sfârșit.
Exemplu: Exemplu:
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
Algoritmul determina valoarea maxima (minima) dintr-un sir de numere introduse de la tastatura.
Algoritmul consta in atribuirea valorii primului element maximului (minimului) si compararea
acestei valori cu elementele din sir.
Pașii care se executa sunt:
Pasul 4: Dacă a>max, atunci se atribuie maximului valoarea lui a, prin max a.
Varianta 1. Se introduce un sir de n numere de la tastatura. Sa se afișeze maximul dintre aceste numere.
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
Citirea cifrelor numărului se face începând cu cifra cea mai semnificativa. Algoritmul folosește
reprezentarea numărului in baza 10:
VARIANTA 1 EXEMPLU
intreg n, p, nr, i, c;
inceput
citeste n;
p1;
pentru i1, n-1 execută
p p*10;
sfârșit pentru;
nr0;
pentru i 1, n executa
citeste c;
nrnr + c*p;
p p div 10;
sfârșit pentru;
scrie nr;
sfârșit.
VARIANTA 2: Se introduc pe rând de la tastatura mai multe numere, care reprezintă cifrele unui
număr, începând cu cifra cea mai semnificativa, până când se introduce un număr care nu poate fi
cifra.
Sa se afișeze numărul r obținut din aceste cifre. Pentru rezolvarea problemei, algoritmul folosește
următorul mod de grupare a termenilor reprezentării numărului in baza 10:
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
VARIANTA 2 EXEMPLU
intreg c,nr;
inceput
nr0;
citeste c;
cât timp c>=0 and c<=9 executa
nrnr*10 + c;
citeste c;
sfârșit cât timp;
scrie nr;
sfârșit.
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
1. Se citeste numărul n.
2. Se inițializează numărul invers inv cu valoarea 0, prin operația inv 0.
3. Se extrage cifra cea mai nesemnificativa din numărul n si se adună cifra la numărul inv înmulțit cu 10,
prin operația invinv*10 + n mod 10.
4. Se elimina din numărul n cifra extrasa, cu operația n n div 10.
5. Daca n<>0, atunci se revine la Pasul 3.
VARIANTA 2 EXEMPLU
intreg n, inv;
inceput
citeste n;
inv0;
cat timp n<>0 executa
invinv*10 + n mod 10;
nn div 10;
sfârșit cat timp;
scrie inv;
sfârșit.
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
Pasul 1.
Se împarte a la b si se obține restul r (ra mod b).
Pasul 2.
Se executa operațiile de atribuire ab; br.
Pasul 3.
Daca b<>0, atunci se revine la Pasul 1, altfel cmmdc a.
- Varianta 2. Folosește algoritmul prin scădere repetata a valorii celei mai mici din
valoarea cea mai mare. Rezolvarea problemei se bazează pe condiția a+b.
- Pașii care se executa sunt:
Pasul 1.
Se scade din numărul mai mare celălalt număr: daca a>b, se execută operația aa-b,
altfel se execută operația bb-a.
Pasul 2.
Dacă a<>b, atunci se revine la Pasul 1; altfel, cmmdc <-a.
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
VARIANTA 1 VARIANTA 2
intreg a, b, r; întreg a,b;
inceput început
citeste a,b; citeste a, b;
cat timp b<>0 executa cât timp a<>b execută
ra mod b; dacă a>b
ab; atunci a a-b;
br; altfel b ‹ b-a;
sfarsit cat timp; sfârșit daca;
scrie „cmmdc=”, a; sfârșit cât_ timp;
sfarsit. scrie "cmmdc=" ,a;
sfârșit.
ex 1: a36, b24 ex:1 a86; b48
intreg a,b,r; intreg a, b;
inceput inceput
a36; a86;
b24; b48;
cat timp 24<>0 (A) executa cat timp 86<>48 (A) executa
r36 mod 24; daca 86>48 (A)
a24; atunci a86-48;
b12; cat timp 38<>48 (A) executa
cat timp 12<> 0 (A) executa daca 38>48 (F)
r12 mod 12; altfel b48-38;
a12; cat timp 38<>10 (A) executa
b0; daca 38>10 (A)
cat timp 0<>0 (F) atunci a38-10;
sfarsit cat timp; cat timp 28<>10 (A) executa
cmmdc=12; daca 28>10 (A)
atunci a28-10;
sfarsit.
cat timp 18<>10 (A) executa
daca 18>10 (A)
atunci a18-10;
cat timp 8<>10 (A) executa
daca 8>10 (F)
altfel b10-8;
cat timp8<>2 (A) executa
daca 8>2 (A)
atunci a8-2;
cat timp 6<>2 (A) executa
daca 6>2 (A)
atunci a6-2;
cat timp 4<>2 (A) executa
daca 4>2 (A)
atunci a4-2;
cat timp 2<> 2 (F)
structura se încheie;
cmmdc=2;
sfarsit;
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
Daca exista cel puțin un astfel de număr, numărul n nu este prim. Pentru a sti daca exista cel putin
un numar care il divide pe n se va folosi o variabila logica ×, care va avea valoarea True daca
numarul este prim si False daca numarul nu este prim.
Se presupune ca numarul este prim (variabila x se initializeaza cu valoarea True) si, pentru primul
numar, gasit in sirul de numere generate, care il divide pe n, se va schimba valoarea variabilei x in
False (numarul nu mai este considerat prim).
VARIANTA EXEMPLU
întreg n,i;
logic x;
inceput
citeste n;
xT;
i2;
cât timp i<=sqrt (n) and x executa
daca n mod i = 0
atunci x F;
altfel i i+1;
sfârsit daca;
sfârsit cât timp;
daca x
atunci scrie "Numarul este prim";
altfel scrie "Numarul nu este prim";
sfârsit daca;
sfârsit.
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
varianta 1 exemplu
intreg n,i; n=12
inceput; scrie 12,1;
citeste n; pentru i=2, 6 executa
scrie n,i; daca n=12 mod 2=0 (A) atunci
pentru i2,n div 2 executa scrie 2;
daca n mod i atunci pentru i=3, 6 executa
scrie i; daca 12 mod 3=0 (A) atunci
sfarsit daca; scrie 3;
sfarsit pentru; pentru i=4, 6 executa
sfarsit. daca 12 mod 4=0 (F);
pentru i=5, 6 executa
daca 12 mod 5=0 (F);
pentru i=6, 6 executa
daca 12 mod 6=0 (A)
scrie 6;
pentru i=7, 6 executa
daca 12 mod 5=0 (F);
.
.
.
VARIANTA 2 EXEMPLU
VARIANTA EXEMPLU
STUDIU DE CAZ
Sa se descompuna un număr n, introdus de la tastatura, in factori primi.
n 32
intreg n, i, k;
inceput intreg n,i,k;
citeste n; inceput
i2; n32;
cat timp n<>1 executa i2;
daca n mod i=0 cat timp 32<>1 (A) executa
atunci k0; daca 32 mod 2=0 (A)
cat timp n mod i=0 atunci k0;
kk+1; cat timp 32 mod 2=0 (A) executa
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
PASII ALGORITMULUI:
1. Nq 0
2. P 1 (p fiind puterea lui 10)
3. Se va imparte n10 la q si se va obtine restul c (c n mod 10) catul n10 (n10 div q)
4. Se actualizeaza formatul de afisare a reprezentarii numarului in baza q (lui nqnq+c*p)
5. Se creste puterea lui 10 prin operatia pp*10
6. Daca n10 <> 0 atunci se revine la PASUL 3
VARIANTA EXEMPLU
n10 nq ex 1: n10 63; q2
intreg n10, nq, q, p; intreg n10, nq, q, p;
citeste n10; inceput
nq0; citeste n1063;
p1; nq0;
cat timp n10<>0 executa p1;
nqnq+p*(n10 mod q) cat timp 63<>0 (A) executa
n10 n10 div q; nq0+1*(63 mod 2);
p p*10; n1063 div 2;
sfarsit cat timp; p1*10;
scrie nq; cat timp 31<>0 (A) executa
nq 1+10*(31 mod 2);
n1031 div 2;
p10*10;
cat timp 15<>0 (A) executa
nq11+100*(15 mod 2);
n1015 div 2;
p100*10;
cat timp 7<>0 (A) executa
nq111+1000*(7mod 2);
n107 div 2;
p1000*10;
cat timp 3<>0 (A) executa
nq1111+10000*(3 mod 2);
n103 div 2;
p10000*10;
cat timp 1<>0 (A) executa
nq11111+100000*(1 mod 2);
n10 1 div 2;
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
p100000*10;
cat timp 0<>0 (F)
sfarsit cat timp;
scrie nq111111;
sfarsit.
ex 2: n1057; q2
intreg n10, nq, q, p;
inceput
citeste n1057;
nq0;
p1;
cat timp 57<>0 (A) executa
nq0+1*(57 mod 2);
n1057 div 2;
p1*10;
cat timp 23 <>0 (A) executa
nq1+10*(23 mod 2);
n1023 div 2;
p10*10;
cat timp 11<>0 (A) executa
nq11+100*(11 mod 2);
n1011 div 2;
p100*10;
cat timp 5<>0 (A) executa
nq111+1000*(5 mod 2);
n105 div 2;
p1000*10;
cat timp 2<>0 (A) executa
nq1111+10000*(2 mod 2);
n102 div 2;
p10000*10;
cat timp 1<>0 (A) executa
nq1111+100000*(1 mod 2);
n101 div 2;
p100000*10;
cat timp 0<>0 (F)
sfarsit cat timp;
scrie nq101111;
sfarsit
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
PASII DE LUCRU:
1. n100
2. se citeste cifra c
3. se aduna la nr n10*q, cifra citita prin operatia n10 n10*q+c
4. se citeste urmatorul c
5. daca c este o cifra (c=>0 si c< q) atunci se revine la pasul 3, altfel se afiseaza nr n10
VARIANTA EXEMPLU
nq n10 ex 1: nq111111; q2
intreg n10, q, c; intreg nq, q, c;
n100; inceput
citeste q n100;
citeste c; q2;
cat timp c=>0 and c<q executa; c1;
n10n10*q+c; cat timp 1=>0 and 1<2 (A) executa
citeste c n100*2+1;
sfarsit cat timp; c1;
scrie n10; cat timp 1=>0 and 1<2 (A) executa
n101*2+1;
c1;
cat timp 1=>0 and 1<2 (A) executa
n103*2+1;
c1;
cat timp 1=>0 and 1<2 (A) executa
n107*2+1;
c1;
cat timp 1=>0 and 1<2 (A) executa
n1015*2+1;
c1;
cat timp 1=>0 and 1<2 (A) executa
n1031*2+1;
c3;
cat timp 3=>0 and 3<2 (F)
sfarsit cat timp;
scrie n1063;
sfarsit.
ex 2: nq100011
q2
intreg n10, q,c;
inceput
.
.
.
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
.
.
.
.
.
.
.
.
.
TARGOVIȘTE, 2023
Liceul Teoretic Petru Cercel Târgoviște
TARGOVIȘTE, 2023