Sunteți pe pagina 1din 5

Algoritmi elementari 2016

Interschimbarea a două valori Maximul dintre două numere

cin >>a>>b; cin >>a>>b;


aux=a; a=b; b= aux ; if (a>b) max=a;
cout<<a<< “ “<<b; else max=b ;
cout<< max ;

Afișare a trei numere intregi în ordine crescătoare


cin >>a>>b>>c;
if (a>b) { aux=a; a=b; b=aux ;}
if (b>c) {aux=b; b=c; c=aux ;}
if (a>b) {aux=a; a=b; b=aux ; }
cout<<a<< “ “<<b<<” “<<c;

NUMĂR PRIM / DIVIZORI PROPRII

Verificarea proprietăţii de număr prim


Suma divizorilor proprii
cin >>nr;
ok=1; cin >>nr; s=0;
for( i = 2; i<=nr/2 ; i++) for( i =2; i<=nr/2 ; i++)
if (nr%i= =0) if (nr%i= =0)
ok=0; s=s+i;
if (ok= =1) cout<<“ nr prim”; cout<<s;
else cout<< “ nr nu este prim”;

Verific dacă un număr x este


perfect

cin >>nr; s=0; Numărul divizorilor proprii


for( i =2; i<=nr/2 ; i++)
if (nr%i= =0) cin >>nr;
s=s+i; d=0;
if(s+1==nr) for( i = 2; i<=nr/2 ; i++)
cout<<”DA”; if (nr%i= =0)
else d++;
cout<<”NU”; cout<<d;

1
Algoritmi elementari 2016
DIVIZORII PRIMI AI UNUI NUMĂR

Afișarea divizorilor primi ai unui număr Afișarea divizorilor primi ai unui număr-II
cin >>nr;
f= 2; cin >>nr;
do{ g=0; f= 2;
while (nr%f= =0) while(nr! =1)
{ nr=nr/f ; g= 1;} { if (nr%f= =0) cout<< f<< endl;
if (g= =1) cout<< f<< endl; while (nr%f= =0)
f++; nr=nr/f ;
}while(nr! =1); f++; }

Suma divizorilor primi ai unui număr


Suma exponențílor divizorilor primi ai unui
cin >>nr; număr
f= 2; s=0;
while(nr! =1) cin >>nr;
{ p=0; f= 2; s=0;
while (nr%f= =0) while(nr! =1)
{ nr=nr/f ; p++;} { p=0;
if (p! =0) s=s+f; while (nr%f= =0)
f++; } { nr=nr/f ; p++;}
cout<<s; s=s+p;
f++; }

Suma divizorilor primi ai unui număr-var II Suma exponențílor divizorilor primi ai unui
cin >>nr; s=0; număr-var II
for( i =2; i<=sqrt(nr) ; i++) cin >>nr; s=0;
{ p=0; for( i =2; i<=sqrt(nr) ; i++)
while (nr%i= =0) { p=0;
{ p++; nr=nr/i;} while (nr%i= =0)
if(p!=0)s=s+i;} { p++; nr=nr/i;}
cout<<s; if(p!=0)s=s+p;}
cout<<s;

Cel mai mic divizor prim al unui număr Cel mai mare divizor prim al unui
dat număr dat
cin >>nr; f= 2; cin >>nr; f= 2;
while(nr! =1) while(nr! =1)
{ while(nr%f= =0) { if (nr%f= =0) max=f;
{ min=f; break;} while(nr%f= =0)
f++; } nr=nr/f;
cout<<min; f++; }
cout<<max;

2
Algoritmi elementari 2016

PRELUCRAREA CIFRELOR UNUI NUMĂR/ INVERSUL NUMĂRULUI

Calculul inversului unui număr Numărul de apariții ale cifei c într-un


ninv=0 ; număr
cout<<” Intr. un numar pt n :”; cin >>n;
while (n!=0) cin>>x>>c; k=0;
{ ninv=ninv*10+n%10; while (x!=0)
n=n/10; } { if(x%10==c)
cout<<” inversul numărului este:”<<ninv; k++;
x=x/10; }
cout<<k;

Suma cifrelor unui număr Suma cifrelor impare ale unui număr
s=0; s=0;
while (n!=0) while (n!=0)
{ s=s+n%10; { if(n%2==1) s=s+n%10;
n=n/10; } n=n/10; }
cout<<s; cout<<s;

Numărul cifrelor unui număr Numărul cifrelor pare unui număr


k=0; k=0;
while (n!=0) while (n!=0)
{ k ++; { if(n%2==0) k ++;
n=n/10; } n=n/10; }
cout<<k; cout<<k;

Cea mai mare cifră a unui număr


max=0;
while (n!=0)
{ if(n%10>max) max=n%10;
n=n/10; }
cout<<max;

Formarea unui număr din cifrele pare Formarea unui număr din cifrele impare
ale unui număr dat, cifrele fiind în ale unui număr dat, cifrele fiind în
aceeași ordine ca în numărul dat . Ex: ordine inversă față de ordinea din
x=34568 , xnou=468 numărul dat . Ex: x=34568 , xnou=864

xnou=0; p=1; xnou=0;


while (x!=0) while (x!=0)
{ if(x%2==0) { if(x%2==1)
{xnou=xnou+ p*x%10; xnou=xnou*10+x%10;
p=p*10;} x=x/10; }
x=x/10; } cout<<xnou;
cout<<xnou;

3
Algoritmi elementari 2016
Ștergerea cifrei c dintr-un număr dat. Înlocuirea cifrei c1 cu cifra c2. Ex:
Ex: x=3245268, c=2, se obține x=3245218, c1=2, c2=1 se obține
xnou=34568 xnou=3145118

cin>>x>>c; xnou=0; p=1; cin>>x>>c1>>c2; xnou=0; p=1;


while (x!=0) while (x!=0)
{ if(x%10!=c) { if(x%10==c1)
{xnou=xnou+ p*x%10; xnou=xnou+ p*c2;
p=p*10;} else
x=x/10; } xnou=xnou+ p*x%10;
cout<<xnou; p=p*10;
x=x/10; }
cout<<xnou;

CMMDC A DOUĂ NUMERE

C.m.m.d.c a două numere-Euclid C.m.m.d.c a două numere-Nicomahus

cin >>a>>b; cin >>a>>b;


do{ r =a%b; a = b; b = r;}while ( r!=0); while(a!=b)
cout<< “c.m.m.d.c este:”<< a; {if(a>b) a=a-b;
else b=b-a;}
cout<<a;

CALCULUL UNOR SUME

s = 1+2+3+.....+n
s= 1!+2!+3!+......+n!
int n, i,s=0;
cout<<” Intr. valoare pt n :”; cin >>n;
for( i = 1;i<=n;i++) cin >>n;
s=s+i; for( i = 1;i<=n;i++)
cout<<”suma primelor”<<n<<”numere { p=p*i;
naturale este:”; s=s+p ;}
cout<< s; cout<<s;

GENERAREA PRIMELOR N NUMERE CARE ÎNDEPLINESC O CONDIȚIE

Afișarea primelor n numere impare Afișarea primelor n numere impare-II

cin >>n; cin >>n;


for( i = 1;i<=2*n;i++) for( i = 1;i<=2*n;i=i+2)
if (i % 2!=0) cout<< i<<” “; cout<< i<<” “;

afișarea primelor n numere prime


int n, i, k, s=0;
k=2;// inițializez cu primul număr prim
cout<<” Intr. valoare pt n :”; cin >>n;
4
Algoritmi elementari 2016

ȘIRUL FIBONACCI 1,1,2,3,5,8,13, 21, 34, 55, 89,……

Afișarea primilor n termeni ai șirului Fibonacci mai mici decât valoarea n.

cin>>n;
t1=1; t2=1;
for( i = 3;i<=n;i++)
{ t3=t1+t2; cout<<t3<<” ”; t1=t2; t2=t3; }

CONVERSII DE NUMERE DIN BAZA 10 ÎN BAZA 2 ȘI INVERS

Conversia unui număr din baza 10 în Conversia unui număr din baza 10 în
baza 2 baza q

cin>>n; n2=0; p=1; cin>>n; nq=0; p=1;


while(n!=0) while(n!=0)
{ n2=n2+p*n%2; { nq=nq+p*n%q;
p=p*10; p=p*10;
n=n/2;} n=n/q;}
cout<<n2; cout<<nq;

Conversia unui număr din baza 2 în Conversia unui număr din baza q în
baza 10 baza 10

cin>>n2; n=0; p=1; cin>>nq; n=0; p=1;


while(n2!=0) while(nq!=0)
{ n=n+ p*n2%10; { n=n+ p*nq%10;
p=p*2; p=p*q;
n2=n2/10;} nq=nq/10;}
cout<<n; cout<<n;

Verific dacă x este putere a lui 2


cin>>x;
while(x%2==0)
x=x/2;
if (x==1) cout <<”da”;
else cout <<”nu”;

Calculul numărului de cifre de 0 și 1 în transcrierea lui x în baza 2 Ex:15(10)=1111(2)


12(10)=1100(2)

c0=0; c1=0;//c0-numarul de cife de 0; c1-numarul de cifre de 1


cin>>x;
while(x!=0)
{if(x%2==0) c0++; else c1++;
x=x/2;}
cout<<c1<<” ”<<c0;
5