Documente Academic
Documente Profesional
Documente Cultură
1. Divizibilitate
Se citesc dou numere ntregi a i b. S se realizeze un algoritm care s verifice dac
cele dou numere sunt divizibile (a divizibil cu b sau b divizibil cu a).
De exemplu dac se citesc numerele a = 25 i b = 5 atunci algoritmul va afia DA, iar n cazul
n care se citesc a = 25 i b = 10 se va afia NU.
n pseudocod algoritmul de rezolvare este:
a, b ntregi
citete a, b
dac (a % b = 0 sau b % a = 0) atunci
|
scrie DA
| altfel
|
scrie NU
|
Explicarea algoritmului: Se folosete o structur alternativ, n care se verific a este
divizibil cu b (dac restul mparirii lui a la b = 0) sau invers.
2. Paritate
Se citete un numr ntreg a. S se realizeze un algoritm care s verifice dac numrul a
este par, afiandu-se un mesaj corespunzator.
De exemplu dac se citete pentru a valoarea 88 atunci algoritmul va afia PAR, iar n cazul n
care se citete a = 15 se va afia IMPAR.
n pseudocod algoritmul de rezolvare este:
a ntreg
citete a
dac (a % 2 = 0) atunci
|
scrie PAR
| altfel
|
scrie IMPAR
|
citete a
d 2 //primul factor prim este 2
ct timp a > 1 execut
| p 0 //puterea factorului d este 0
| ct timp (a % d = 0) execut
| | p p + 1
| | a a / d
| |
| dac p 0 atunci
| | scrie d, ^, p, ,
| |
| d d + 1
|
36
18
9
3
1
2
2
3
3
Explicarea algoritmului: Algoritmul folosit este algoritmul lui EUCLID. Exista i algoritmul
care afla cmmdc prin scadere nsa nu este eficient (despre eficiena algoritmilor vom vorbi tema
urmtoare).
Algoritmul lui Euclid folosete o structur repetitiv cu test iniial. Mai nti aflm restul mpririi
lui a la b i ct timp acest rest este diferit de 0, vom nlocui pe a cu b i pe b cu restul obinut,
dup care recalculm restul mpririi noului a la noul b.
Euclid a demonstrat c oricare ar fi numerele a i b iniiale, repetnd operaiile descrise mai
sus, gsim restul = 0. n acel moment putem afirma c cmmdc(a,b) este ultimul rest nenul.
Deoarece variabila b ia mereu valoarea restului, afiam pe b ca fiind cmmdc.
8. Numere perfecte
Se citete un numr ntreg n. S se realizeze un algoritm care s afiseze toate numerele
perfecte mai mici sau egale cu n. Spunem c un numr este perfect dac este egal cu
suma divizorilor si, far el nsui.
De exemplu dac se citete pentru n valoarea 30 atunci algoritmul va afia 6 28, deoarece
aceste dou numere sunt singurele pentru care putem scrie:
6 = 1 + 2 + 3 i
28 = 1 + 2 + 4 + 7 + 14.
n pseudocod algoritmul de rezolvare este:
n, i, d, s ntreg
citete n
pentru i 1, n execut
Explicarea algoritmului: Algoritmul verific fiecare numr cuprins ntre 1 i n dac este
numr perfect.
Aceast verificre se face iniializnd suma cu 0 pentru fiecare numr i cutnd divizorii de la
1 la jumatatea numrului. Divizorii se adaug la sum iar la final aceasta este comparat cu
numrul testat.
9. Numere prietene
Se citesc dou numere ntregi a i b. S se realizeze un algoritm care s verifice dac
cele doau numere sunt prietene. Spunem ca dou numere sunt prietene dac suma
divizorilor proprii ai unui numr este egal cu celalalt i invers.
De exemplu dac se citete pentru a valoarea 284 i pentru b valoarea 220 atunci algoritmul va
afia mesajul numere prietene.
n pseudocod algoritmul de rezolvare este:
a, b, sa, sb ntreg
citete a, b
sa 0
sb 0
pentru i 2, [a/2] execut
| dac (a % i = 0) atunci
| | s s + i //suma divizorilor proprii numrului a
| |
|
pentru i 2, [b/2] execut
| dac (b % i = 0) atunci
| | sb sb + i // suma divizorilor proprii numrului b
| |
|
daca sa = b i sb = a atunci
| scrie numere prietene
| altfel
|
scrie NU sunt numere prietene
|
10. Factorial
Se citete un numr ntreg a. S se realizeze un algoritm care s afiseze n! Factorial de n
(notat n!) este produsul numerelor de la 1 la n.
De exemplu dac se citete pentru a valoarea 4 atunci algoritmul va afia 24, deoarece 4! = 1 *
2 * 3 * 4 = 24.
n pseudocod algoritmul de rezolvare este:
a, i, p ntreg
citete a
p 1
pentru i 1, a execut
| p p * i //calculm produsul
|
scrie p
Explicarea algoritmului:
irul lui Fibonacci se formeaz dup urmatoarea formul:
1
dac
n = 1 sau n = 2
Fibo(n) =
Fibo (n-1) + Fibo (n-2) dac n > 2
Algoritmul calculeaz fiecare termen i cnd ajunge la al n-lea se oprete i l afieaz.
Se folosete o structur repetitiv cu numr cunoscut de repetiii, unde variabila contor i ia
valori de la 3 la n, deoarece primii doi termeni sunt deja calculai, iar noi trebuie s calculm
termenii ncepand cu al 3-lea.
citete a
inv 0 //initial inv este nul
ct timp a 0 execut
| inv inv * 10 + a % 10
| a a / 10
|
scrie inv
Explicarea algoritmului: Algoritmul descompune n cifre numrul a i adaug fiecare
cifr la numrul invers.