Documente Academic
Documente Profesional
Documente Cultură
Algoritmi - Elementari Pseudocod
Algoritmi - Elementari Pseudocod
Numar prim
Se citeste n, numar natural >1. Sa se precizeze daca este prim sau nu.
Algoritmul va fi :
intreg n,d,prim ; // prim =1 daca n e numar prim si prim=0 daca n nu e prim
citeste n ;
prim1; //presupun ca numarul este prim si initializez variabila prim cu 1
d 2; // d = posibil divizor
cat timp d<= n div2 si prim=1 executa // sau d<=[ n ] si prim=1
daca n mod d=0 atunci
prim0; // am gasit un divizor
daca prim =1 atunci // prim nu a fost schimbat, deci nu a fost gasit nici un divizor
scrie " numarul ", n, " este prim";
altfel
scrie " numarul ", n, " nu este prim"; // prim =0, deci a fost gasit divizor si n nu e prim
Obs: in momentul in care prim a devenit 0 , testul (d<= n/2 si prim=1 ) va genera fals si
instructiunea cat timp se incheie.
Cu instructiunea « pentru »
intreg n,d,prim ; // prim =1 daca n e numar prim si prim=0 daca n nu e prim
citeste n ;
prim1; //presupun ca numarul este prim si initializez variabila prim cu 1
pentru d2, n div2 si prim=1 executa
daca n mod d=0 atunci
prim0; // am gasit un divizor
daca prim =1 atunci // prim nu a fost schimbat, deci nu a fost gasit nici un divizor
scrie " numarul ", n, " este prim";
altfel
scrie " numarul ", n, " nu este prim"; // prim =0, deci a fost gasit divizor si n nu e prim
scrie " nr maxim este ", max, " si nr minim este ", min;
Ex: n=6, numerele: 23,45,12,6,80,9 se va afisa: nr maxim este 80 si nr minim este 6
3. Cel mai mare divizor comun pt doua numere ( foloseste algoritmul lui Euclid)
Fie a si b doua numere naturale, citite de la tastatura. Scrieti un program care sa calculeze si sa
afiseze cmmdc(a,b).
Solutie :
Se aplica algoritmul lui Euclid de la matematica si anume : cat timp b 0, se
calculeaza restul impartirii lui a la b ; la pasul urmator impartitorul devine deimpartit si restul devine
impartitor. Ultimul rest 0 este cmmdc(a,b).
Exemplu numeric : a=24, b=112 ,
Se obtine : deimpartit impartitor cat rest
24 = 112 *0 + 24 s
112 = 24 *4 + 16
24 = 16 *1 + 8 8 este c.m.m.d.c.
16 = 8 *2 + 0
Obs: daca a<b, dupa primul pas a devine b, deci, deimpartitul va fi mai mare
Algoritmul va fi :
natural a,b,r ; // notam cu r restul
citeste a, b ;
cat timp b 0 executa
r a%b ; // se calculeaza restul
a b ; // impartitorul devine deimpartit
b r ; // restul devine impartitor
Obs.: daca vrem sa calculam cel mai mic multiplu comun: cmmc =a*b/ cmmdc
Fie a si b doua numere naturale, citite de la tastatura. Scrieti un program care sa calculeze si sa
afiseze c.m.m.d.c.(a,b).
natural a,b ;
citeste a, b ;
cat timp a b executa
daca a>b atunci
aa-b;
altfel
bb-a;
intreg n,d,p ;
citeste n ;
d 2;
cat timp n>1 executa
p0; // initializez puterea
cat timp n mod d=0 executa // atata timp cat d este divizor impart n la d si numar de
n n div d; // cate ori impart, adunand 1 la p
p p+1;
5. Sirul Fibonacci
Algoritmul va fi :
natural n, i, f1, f2, f3 ;
f1 1; f2 1;
citeste n; //n>=3
pentru i 3,n executa // se incepe de la i=3, pt ca primii doi termeni sunt cunoscuti (1 si 1)
f3 f1+ f2; // se calculeaza termenul i;
f1 f2; // la f1 pun noul termen anteprecedesor ( pregatesc pasul urmator!)
f2 f3 ; // la f2 pun noul termen precedesor
natural n,s;
citeste n;
s0;
cat timp n 0 executa
s s+n mod 10;
n n div 10 ;
scrie s;
2. Se citeste un numar natural diferit de 0. Sa se afiseze suma primelor n numere naturale.
natural n,s, i;
citeste n;
s0; i1;
cat timp i<=n executa
s s+i;
i i+1;
scrie s;
3. Se citesc cifre pana se intalneste -1. Sa se afiseze numarul format din cifrele citite
(ex: date de intrare: 3 ,4 , 5 , 7, 2 ,-1 se va afisa 34572 )
natural n, nr;
citeste n;
nr0;
cat timp n -1 executa
nr nr*10+n ;
citeste n ;
scrie nr;
4.Se citesc cifre pana se intalneste -1. Sa se afiseze numarul format din cifrele citite, dar considerate
in ordinea inversa citirii
(ex: date de intrare: 3 ,4 , 5 , 7, 2 ,-1 se va afisa 27543 )
natural n, nr ,p;
citeste n;
nr0; p1 ;
cat timp n -1 executa
nr nr +n*p ;
pp*10 ;
citeste n ;
scrie nr;