Sunteți pe pagina 1din 8

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
număr
cin >>nr;
f= 2; s=0; cin >>nr;
while(nr! =1) f= 2; s=0;
{ p=0; while(nr! =1)
while (nr%f= =0) { p=0;
{ nr=nr/f ; p++;} while (nr%f= =0)
if (p! =0) s=s+f; { nr=nr/f ; p++;}
f++; } s=s+p;
cout<<s; 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
ale unui număr dat, cifrele fiind în impare ale unui număr dat, cifrele fiind
aceeași ordine ca în numărul dat . Ex: în 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


baza 10

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


while(n2!=0)
{ n=n+ p*n2%10;
p=p*2;
n2=n2/10;}
cout<<n;
Conversia unui număr din baza q în
baza 10

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


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

5
Algoritmi elementari 2016

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;

PRELUCRAREA A N NUMERE
Primul/Penultimul/ Verificarea unei Generarea celei mai lungi secvențe de
Afișarea numerelor care Suma numerelor care Numărul de numere care
îndeplinesc o condiție îndeplinesc o condiție îndeplinesc o condiție
Ultimul număr care proprietăți de către elemente consecutive care îndeplinesc o
îndeplinește o condiție toate cele n numere condiție
Afișarea numerelor Suma numerelor Numărul de numere care Primul număr par Toate numerele au Câte elemente conține cea mai lungă
prime palindrom din șir au suma cifrelor un număr parități diferite secvență de elemente valori prime
s=0; par cin>>n; cin>>n>>x; consecutive
cin>>n; cin>>n; k=0; for( i =1; i<=n ; i++) cin>>n;
for( i =1; i<=n ; i++) for( i =1; i<=n ; i++) cin>>n; { cin>>x; //citescșiprimulnumărdin lc=lmax=0;
{ cin>>x; { cin>>x; for( i =1;i<=n;i++) if(x%2==0) k++; trecele nnumere for( i =1; i<=n ; i++)
ok=1; aux=x; ninv=0; { cin>>x; if (k==1){p=x; ok=1;//consider că toate { cin>>x;
for( j =2; j<=x/2 ; j++) while (aux!=0) aux=x; s=0; break;} numerele îndeplinesc ok=1;
if (x%j= =0) {ninv=ninv*10+aux%10; while (aux!=0) } condiția for( j =2; j<=x/2 ; j++)
ok=0; aux=aux/10; } {s=s+aux%10; cout<<p; for( i =1; i<n ; i++) if (x%j= =0) ok=0;

6
Algoritmi elementari 2016
if(ok==1) if(x==ninv) aux=aux/10; } { cin>>y; if(ok==1)
cout<<x<<” ”;} s=s+x ;} if(s%2==0) if(x%2==y%2) lc++;
cout<<s ; k++ ;} {ok=0; elseif(lc>lmax) {lmax=lc;
cout<<k; break;} lc=1;} }
x=y;} if(lc>lmax) {lmax=lc;}
if(ok==1) //în cazul când ultimul element din șir face
cout<<”da”; parte din cea mai lungă secvență de elemente
else ce îndeplinesc condiția cerută
cout<<”nu”; cout<<lmax;
Afișarea numerelor Suma numerelor din șir Numărul de numere care Ultimul și penultimul Toate numerele sunt Câte elemente conține cea mai lungă
care au numai cifre prime cu un număr k au nr de cifre pare egal cu număr perfect pare secvență de elemente crescătoare
pare citit de la tastatură nr de cifre impare cin>>n; consecutive
cin>>n; s=0; cin>>n; k=0; cin>>n; u=p=0; ok=1;//consider că toate cin>>n>>x;
for( i =1; i<=n ; i++) cin>>n>>k; for( i =1; i<=n ; i++) for( i =1; i<=n ; i++) numerele îndeplinesc lc=1; lmax=0;
{ cin>>x; for( i =1; i<=n ; i++) { cin>>x; { cin>>x; s=0; condiția for( i =1; i<n ; i++)
aux=x; { cin>>x; aux=x; for( j =2; j<=x/2 ; j++) for( i =1; i<=n ; i++) { cin>>y;
ki=0;//nrcifrelorimpare a=x; b=k; ki=0;kp=0; if (x%j= =0) { cin>>x; if(y<x)
while (aux!=0) while (a!=b) while (aux!=0) s=s+j; if(x%2!=0) lc++;
{if(aux%2 !=0) {if(a>b) {if(aux%2 !=0) if(s+1==x) {ok=0; elseif(lc>lmax) {lmax=lc;
ki++; a=a-b; ki++; {p=u; break;} lc=1;}
aux=aux/10; } else b=b-a; } elsekp++; u=x;} } x=y; }
if(ki==0) if(a==1) aux=aux/10; } } if(ok==1) if(lc>lmax) {lmax=lc;}
cout<<x<<” ”;} s=s+x ;} if(ki==kp) cout<<p<<” ”<<u; cout<<”da”; cout<<lmax;
cout<<s ; k++ ;} else
cout<<k<<” ”; cout<<”nu”;

Prelucrarea numerelor Generarea primelor n Generarea celui mai mic/mare


din intervalul [a,b] care numere care indeplinesc o număr care îndeplinește o
îndeplinesc o condiție condiție condiție, mai mare/mic decât
un număr dat n
Afișarea numerelor Afișarea primelor n Generarea celui mai mic
din intervalul [a,b] numere care au exact 2 număr prim mai mare
care au ceamai mare divizori proprii decât un număr dat n
cifră un numărimpar cin>>n;
cin>>n; k=n+1;
cin>>a>>b; k=2; ok=0;//încă nu am găsit numărul
prim

7
Algoritmi elementari 2016
for( i =a; i<=b ; i++) while(n!=0) while(ok==0)
{ aux=i; m=0; { d=0; { d=0;
while (aux!=0) for( j =2;j<=k/2;j++) for(j =2;j<=k/2;j++)
{ if(aux%10>m) if (k%j= =0) if (k%j= =0)
m=aux/10; d++; d++;
aux=aux/10; } if(d==2) if(d==0)
if(m%2==1) {cout<<k<<” ”; {cout<<k<<” ”;
cout<<i<<” ”;} n--;} ok=1;}
k++;} k++;}

Afișarea numerelor Afișarea primelor n Generarea celui mai mare


din intervalul [a,b] numere care sunt număr cu trei divizori
care nu conțin cifra 2 palindrom și conțin doar proprii mai mic decât un
cin>>a>>b; cifre pare număr dat n
for( i =a; i<=b ; i++) cin>>n; cin>>n;
{ aux=i; k=2; k=n-1;
k2=0;//nrcifreloregale cu 2 while(n!=0) ok=0;// încă nu am găsit numărul
while (aux!=0) { aux=k; ninv=0;ki=0; ce îndeplinește condiția
{if(aux%10==2) while (aux!=0) while(ok==0)
k2++; {ninv=ninv*10+aux%10; { d=0;
aux=aux/10; } if(aux%2==1)ki++; for(j =2;j<=k/2;j++)
if(k2==0) aux=aux/10; } if (k%j= =0) d++;
cout<<i<<” ”;} if(k==ninv&&ki==0) if(d==3)
{cout<<k<<” ”; {cout<<k<<” ”;
n--;} ok=1;}
k++;} k--;}

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