Sunteți pe pagina 1din 4

1.

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 ;
prim1;  //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
prim0; // am gasit un divizor

dd+1; // caut urmatorul posibil 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 ;
prim1;  //presupun ca numarul este prim si initializez variabila prim cu 1
pentru d2, n div2 si prim=1  executa
daca n mod d=0 atunci
prim0; // 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

2. Numarul maxim si minim dintr-un sir de n numere citite


Se citesc n numere intregi. Sa se afiseze care este numarul cel mai mare si cel mai mic
intreg n,i,x,max, min ; // max va retine numarul maxim si min pe cel minim
citeste n ;
citeste x; max x ; min x ; //primul numar citit il pun la max si la min
pentru i2, n   executa // i incepe de la 2 pentru ca am citit deja un numar
citeste x ;
daca x>max atunci
max x;

daca x<min atunci


min x;

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

scrie “ cmmdc =“, a ; // algoritmul se incheie cand b =0;


// ultimul b  0(acelasi lucru cu r  0) a fost salvat in variabila a.

Obs.: daca vrem sa calculam cel mai mic multiplu comun: cmmc =a*b/ cmmdc

Cel mai mare divizor comun pt doua numere (varianta 2)

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
aa-b;
altfel
bb-a;

scrie “ cmmdc =“, a ;

Exemplu pentru a=36 si b=24:


P1: 36  24? da
36>24 ? da a=36-24=12
P2: 12  24? da
12>24 ? nu b=24-12=12

P3: 12  12? nu iese din cat timp


scrie 12
4. Descompunerea in factori primi

Se citeste n, numar natural >1. Sa se descompuna in factori primi


Exemplu: pentru n=20 se va afisa: 2 la puterea 2 , 5 la puterea 1
Se incepe cu divizorul d=2. Daca d este divizor, se va imparti numarul n la d de cate ori se poate
(pentru a afla exponentul factorului prim). Notam puterea factorului cu p.
Algoritmul se incheie cand n devine 1

intreg n,d,p ;
citeste n ;
d 2;
cat timp n>1 executa
p0; // 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;

daca p  0 atunci // daca p a fost modificat inseamna ca d a fost divizor si il


afisez
scrie d, " la puterea " , p;

dd+1; // se trece la urmatorul d

5. Sirul Fibonacci

Fie sirul Fibonacci 1, 1, 2, 3, 5, 8, 13, 21, 34, …..


Se observa ca primii doi termeni sunt egali cu 1, iar fiecare termen urmator este egal cu suma
celor doi termeni care il preced (f1=1;f2=1; f3=f1+f2, f4=f2+f3………..fn=fn-2+fn-1).
Fie n un numar citit de la tastatura. Sa se scrie un program care sa afiseze cel de-al n-lea
termen al sirului Fibonacci.
Solutie : Pentru calculul unui termen este nevoie de cei doi termeni anteriori. Vom folosi trei
variabile f1, f2, f3 astfel : f1 si f2 sunt termenii anteriori(consecutivi), iar f3 = termenul urmator;
f3 va fi suma celorlalti : f3f1+f2 ; pasul urmator va fi : f1f2 ; f2f3 ;

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

scrie “ cel de-al “ , n , “- lea termen Fibonacci este “, f3;

Ex : pt n=7 se va afisa : cel de-al 7-lea termen Fibonacci este 13


Exercitii:

1 .Se citeste un numar natural diferit de 0. Sa se afiseze suma cifrelor sale.

natural n,s;
citeste n;
s0;
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;
s0; i1;
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;
nr0;
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;
nr0; p1 ;
cat timp n  -1 executa
nr  nr +n*p ;
pp*10 ;
citeste n ;

scrie nr;

S-ar putea să vă placă și