Sunteți pe pagina 1din 16

Algoritmi elementari 2020

Interschimbarea a două valori

cin >>a>>b;
aux=a; a=b; b= aux ;
cout<<a<< “ “<<b;

Maximul dintre două numere

cin >>a>>b;
if (a>b) max=a;
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;

Verific dacă un număr este pătrat perfect


if(sqrt(x)==int(sqrt(x)))
cout<<”DA”;
else
cout<<”NU”;

Verific dacă numărul are ultimele două cifre egale


If(x%10==x/10%10)

NUMĂR PRIM / DIVIZORI PROPRII

Verificarea proprietăţii de număr prim


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

Varianta II-verific dacă nr x este prim

d=2; ok=1;//pp că x este prim;


while(d*d<=x && ok==1)
{ if (x%d= =0) ok=0;
d++;}
if(ok==1) cout<<“ nr prim”;
else cout<< “ nr nu este prim”;

1
Algoritmi elementari 2020
Varianta III-eficienta-verific dacă nr x este prim
ok=1;//pp că x este prim;
if(x<2|| x%2==0 &&x>2) ok=0;

for(d=3;d*d<=x && ok==1; d=d+2)


if (x%d= =0) ok=0;
if(ok==1) cout<<“ nr prim”;
else cout<< “ nr nu este prim”;

Suma divizorilor proprii


cin >>nr; s=0;
for( i =2; i<=nr/2 ; i++)
if (nr%i= =0) s=s+i;
cout<<s;

Verific dacă un număr x este perfect


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

Cel mai mic divizor propriu


d=0;
for( i = 2; i<=nr/2 ; i++)
if (nr%i= =0)
{d=i; break;}//opresc la primul divizor
cout<<d;

Numărul divizorilor proprii


cin >>nr;
d=0;
for( i = 2; i<=nr/2 ; i++)
if (nr%i= =0)
d++;
cout<<d;

Cel mai mare divizor propriu


d=0;
for( i = 2; i<=nr/2 ; i++)
if (nr%i= =0)
d=i; //păstrez fiecare divizor, până rămân cu ultimul
cout<<d;

2
Algoritmi elementari 2020
DIVIZORII PRIMI AI UNUI NUMĂR

Afișarea divizorilor primi ai unui număr


cin >>nr;
f= 2;
do{ g=0;
while (nr%f= =0)
{ nr=nr/f ; g= 1;}
if (g= =1) cout<< f<< endl;
f++;
}while(nr! =1);

Afișarea divizorilor primi ai unui număr-II


cin >>nr; s=0;
for( i =2; i<=nr ; i++)
{ p=0;
while (nr%i= =0)
{ p++; nr=nr/i;}
if(p!=0) cout<< i<< endl;

Suma divizorilor primi ai unui număr


cin >>nr;
f= 2; s=0;
while(nr! =1)
{ p=0;
while (nr%f= =0)
{ nr=nr/f ; p++;}
if (p! =0) s=s+f;
f++; }
cout<<s;

Suma divizorilor primi ai unui număr-var II


cin >>nr; s=0;
for( i =2; i<=nr ; i++)
{ p=0;
while (nr%i= =0)
{ p++; nr=nr/i;}
if(p!=0)s=s+i;}
cout<<s;

Suma exponențílor divizorilor primi ai unui număr


cin >>nr;
f= 2; s=0;
while(nr! =1)
{ p=0;
while (nr%f= =0)
{ nr=nr/f ; p++;}
s=s+p;
f++; }

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

Cel mai mic divizor prim al unui număr dat


cin >>nr; f= 2;
while(nr! =1)
{ while(nr%f= =0)
{ min=f; break;}
f++; }
cout<<min;

Cel mai mare divizor prim al unui număr dat


cin >>nr; f= 2;
while(nr! =1)
{ if (nr%f= =0) max=f;
while(nr%f= =0)
nr=nr/f;
f++; }
cout<<max;

PRELUCRAREA CIFRELOR UNUI NUMĂR/ INVERSUL NUMĂRULUI

Calculul inversului unui număr


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

Verific dacă numărul n este palindrom


ninv=0 ; x=n ;
while (x!=0)
{ ninv=ninv*10+x%10;
x=x/10; }
if( ninv==n) cout<<”DA”;
else cout<<”NU”;

Suma cifrelor unui număr


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

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

Numărul cifrelor unui număr


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

Numărul cifrelor pare unui număr


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

5
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;

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


cin>>x>>c; k=0;
while (x!=0)
{ if(x%10==c)
k++;
x=x/10; }
cout<<k;
Formarea unui număr din cifrele pare ale unui număr dat, cifrele fiind în aceeași ordine
ca în numărul dat . Ex: x=34568 , xnou=468
xnou=0; p=1;
while (x!=0)
{ if(x%2==0)
{xnou=xnou+ p*(x%10);
p=p*10;}
x=x/10; }
cout<<xnou;
Formarea unui număr din cifrele impare ale unui număr dat, cifrele fiind în ordine
inversă față de ordinea din numărul dat . Ex: x=34568 , xnou=864
xnou=0;
while (x!=0)
{ if(x%2==1)
xnou=xnou*10+x%10;
x=x/10; }
cout<<xnou;

Ștergerea cifrei c dintr-un număr dat. Ex: x=3245268, c=2, se obține xnou=34568
cin>>x>>c; xnou=0; p=1;
while (x!=0)
{ if(x%10!=c)
{xnou=xnou+ p*(x%10);
p=p*10;}
x=x/10; }
cout<<xnou;

Înlocuirea cifrei c1 cu cifra c2. Ex: x=3245218, c1=2, c2=1 se obține xnou=3145118
cin>>x>>c1>>c2; xnou=0; p=1;
while (x!=0)
{ if(x%10==c1)
xnou=xnou+ p*c2;
else
xnou=xnou+ p*(x%10);
p=p*10;
x=x/10; }
cout<<xnou;

Formarea celui mai mare număr din cifrele unui număr dat, Ex: x=324546182 ,
xnou=865443221
xnou=0;
for(c=9;c>=0;c--)
{ ap=0;//inițializăm numărul de apariții ale cifrei c în numărul x
xx=x;//păstrăm numărul x într-un auxiliar xx
while (xx!=0)
{ if(xx%10==c) ap++;
x=x/10; }
while(ap!=0)
{ xnou=xnou*10+c;
ap--;}
//sau
//for(i=1;i<=ap;i++)
// xnou=xnou*10+c;
}
cout<<xnou;
Numărul cifrelor distincte ale unui număr dat. Ex: x=324546182 , are 7 cifre distincte

k=0;
for(c=0;c<=9;c++)//nu contează dacă parcurgem cifrele crescător sau descrescător
{ ap=0;//inițializăm numărul de apariții ale cifrei c în numărul x
xx=x;//păstrăm numărul x într-un auxiliar xx
while (xx!=0)
{ if(xx%10==c)
ap++;
x=x/10; }
if(ap!=0) k++;
}
Verific dacă numărul x are cifrele în ordine crescătoare
ok=1;//consider că numărul are cifrele în ordine crescătoare
while (n>9) // ca să am în număr cel puțin două cifre
{ if(n%10<n/10%10) //ultima cifră este mai mică decât penultima cifră
ok=0; //am găsit două cifre care nu îndeplinesc condiția
n=n/10; }
if(ok==1)cout<<”DA”;
esle cout<<”NU”;

Prima cifră a unui număr


cin>>x;
while(x>9)
{x=x/10 ;}
cout<<x ; rămâne cu prima cifră

Verific dacă prima cifră a unui număr este egală cu ultima cifră
cin>>x; u=x%10;//păstrez ultima cifră
while(x>9)
{x=x/10 ;}
//x va rămâne cu prima cifră
if(u==x) cout<<”DA”;
else cout<<”NU”;

CMMDC A DOUĂ NUMERE


C.m.m.d.c a două numere-Euclid
cin >>a>>b;
do{ r =a%b; a = b; b = r;}while ( r!=0);
cout<< “c.m.m.d.c este:”<< a;

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


cin >>a>>b;
while(a!=b)
{if(a>b) a=a-b;
else b=b-a;}
cout<<a;

Verific dacă două numere sunt prime între ele


while(a!=b)
{if(a>b) a=a-b;
else b=b-a;}
if(a==1) cout<<”DA”;
else cout<<”NU”;

CMMMC a două numere


a=x ; b=y ;
while(a!=b)
{if(a<b) a=a+x;
else b=b+y;}
cout<<a;

Ș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 baza 2

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


while(n!=0)
{ n2=n2+p*n%2;
p=p*10;
n=n/2;}
cout<<n2;
Conversia unui număr din baza 10 în baza q
cin>>n; nq=0; p=1;
while(n!=0)
{ nq=nq+p*n%q;
p=p*10;
n=n/q;}
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;

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;

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 UNOR SUME


s = 1+2+3+.....+n

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

s= 1!+2!+3!+......+n!
cin >>n;
for( i = 1;i<=n;i++)
{ p=p*i;
s=s+p ;}
cout<<s;
GENERAREA PRIMELOR N NUMERE CARE ÎNDEPLINESC O CONDIȚIE

Afișarea primelor n numere impare

cin >>n;
for( i = 1;i<=2*n;i++)
if (i % 2!=0) cout<< i<<” “;
Afișarea primelor n numere impare-II

cin >>n;
for( i = 1;i<=2*n;i=i+2)
cout<< i<<” “;

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