CMMMDC si CMMMC

De data asta, vom creea un program care afla CMMMDC si CMMMC intre doua numere cu ajutorul descompunerii in factori primi.

CMMDC
In C++, programul arata astfel:

int x,y,d,px,py,min,c;
cin>>x>>y;
d=2;c=1;
while(x!=1&&y!=1)
{
px=py=0;
while(x%d==0)
{
x=x/d;
px++;
}
while(y%d==0)
{
y=y/d;
py++;
}
if(px>0&&py>0)
{
if(px<py)min=px;
else min=py;
c=c*pow(d,min)
}
d++;
}
cout<<c;

CMMMC
In C++, programul arata astfel:

int x,y,d,px,py,max,c;
cin>>x>>y;
d=2;c=1;
while(x!=1&&y!=1)
{
px=py=0;
while(x%d==0)
{
x=x/d;
px++;
}
while(y%d==0)
{
y=y/d;
py++;
}
if(px>py)max=px;
else max=py;
c=c*pow(d,max);
d++;
}
cout<<c;

Obs: Pentru ambele programe va trebui sa includem tagul #include <cmath>, deoarece folosim puteri il aflarea lui c.

Verificare patrat perfect

Pentru acest algoritm vom folosi descompunerea in factori primi pentru a determina daca un numar este sau nu patrat perfect.

In C++, programul arata astfel:

int n,d,p,ok;
cin>>n;
d=2;
ok=0;
while(n!=1)
{
p=0;
while(n%d==0)
{
n=n/d;
p++;
}
if(p>0&&p%2==1)ok=1;
d++;
}
if(ok==0)cout<<“patrat perfect”;
else cout<<“nu e patrat perfect”;

Obs: Un numar este patrat perfect daca in descompunearea sa toti factorii primi sunt la putere para.

Descompunerea in factori primi

Pentru acest program vom folosi o variabila la care impartim numarul si care va creste in valoare odata cu impartirea acestuia si de o alta variabila in care vom numara de cate ori este impartit numarul ales.

In C++, programul arata astfel:

int n,d,p;
cin>>n;
d=2;
while(n!=1)
{
p=0;
while(n%d==0)
{
n=n/d;
p++;
}
if(p>0)cout<<d<<” “<<p<<“\n”;
d++;
}

Numarul de divizori

Este acelasi algoritm ca cel de la suma divizorilor, doar ca de data asta in loc sa ii adunam ii vom aduna intr-o variabila k.

In C++, programul arata astfel:

int n,i,k=0,j;
double rad;
cin>>n;
rad=sqrt(n);
for(i=1;i<=n;i++)
{
if(n%i==0)
{
j=n/1;
if(i!=j)k=k+2;
else k++;
}
}
cout<<k;

Suma divizorilor unui numar

Aceast alogritm poate fi efectual in doua feluri: unul eficient si unul neeficient, pentru incepatori.

Pentru inceput, programul arata astfel:

int x,i,s;
cin>>x;s=0;
for(i=1;i<=n;i++)
{
if(x%i==0)s=s+i;
}
cout<<s;

In varianta avansata, eficienta, programul arata astfel:

int n,i,s,j;
double rad;
cin>>n;
s=0;
rad=sqrt(n);
for(i=1;i<=n;i++)
{
if(n%i==0)
{
j=n/i;
if(i!=j)s=s+i+j;
else s=s+i;
}
}
cout<<s;

Pentru ca proramul de mai sus sa funcitoneze trebuie sa includem tagul #include <cmath>

Sirul lui Fibonacci

Acest sir consta in formula f(n)=f(n-2)+f(n-1), unde f(1)=1 si f(2)=1. f reprezinta o functie.

  • Afisarea primilor n termeni

-vom nota f(n-2) cu a, f(n-1) cu b si f(n) cu c.

In C++, programul arata astfel:

int a,b,c,n,i;
cin>>n;
if(n==1)cout<<1;
else if(n==2) cout<<1<<” “<<1;
else
{
a=1;b=1;
cout<<a<<” “<<b<<” “;
for(i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
cout<<c<<” “;
}
}

  • Afisarea celui mai mare termen mai mic decat x

In C++, progrmaul arata astfel:

int x,a,b,c;
cin>>x;
a=b=1;
while(a+b<x)
{
c=a+b;
a=b;
b=c;
}
cout<<c;

  • Scrierea unui numar ca suma de termeni ai sirului

In C++, programul arata astfel:

int n,a,b,c;
cin>>n;
while(n>0)
{
a=0;b=1;
while(a+b<=n)
{
c=a+b;
a=b;b=c;
}
cout<<c<<” “;
n=n-c;
}

 

 

 

Verificare numar prim

Pentru a verifica daca un numar este prim sau nu avem nevoie de structura repetitiva for.
In C++, programul arata astfel:

for(i=1;i<=n;i++)
{
if(x%i==0)k++;
}

, unde x reprezinta numarul care trebuie verificat, variabila i ia toate valorile de la 1 la i si verifica daca se impart (fara rest) la x, iar in k numaram de cate ori se intampla acest lucru.
Daca k=2, adica daca numarul x are doi divizior (numarul 1 si pe sine), atunci, numarul este prim.

Cifra maxima/minima dintr-un numar

Pentru a determina cifra maxima/minima, vom folosi un numar natural citit de la tastatura si doua variabile, max/min si c.
Pentru a determina maximul, vom initializa maximul cu -1 (max=-1).
Pentru a determina minimul, vom initializa minimul cu 10 (min=10).

In C++, algoritmul arata astfel:

int n,max=-1;
cin>>n;
while(n!=0)
{
int c=n%10;
if(c>max)max=c;
n=n/10;
}
cout<<max;
return 0;

Pentru a determina minimul se foloseste exact acelasi algoritm doar ca vom schimba variabila max in min=10.