Răspuns :
#include <iostream>
#include <cmath>
int main()
{
int n, p_max, e_max = 0, sq;
cin>>n;
//Facem descompunerea cu 2 separat deoarece e singurul nr prim par
if(n % 2== 0)
{
int e = 0;
while(n % 2 == 0)
{
n /= 2;
e++;
}
p_max = 2;
e_max = e;
}
sq = sqrt(n);
//Cum singurul numar prim par este 2, vom verifica numai numerele impare (i += 2)
for(int d = 3; d <= sq; d += 2)
{
if(n % d == 0)
{
int e = 0;
while(n % d == 0)
{
n /= d;
e++;
}
if(e >= e_max)
{
e = e_max;
p_max = d;
}
sq = sqrt(n);
}
cout<<p_max;
}
//Prin functii
#include <iostream>
#include <cmath>
int descompunere(int & x, int d) /*Descompune numarul x dupa numarul prim d si returneaza exponentul lui d*/
{
int e = 0;
while(x % d == 0)
{
n /= d;
e++;
}
return e;
}
int main()
{
int n, p_max, e_max = 0, sq, e;
cin>>n;
e = descompunere(n, 2);
if(e)
{
p_max = 2;
e_max = e;
}
sq = sqrt(n);
//Cum singurul numar prim par este 2, vom verifica numai numerele impare (i += 2)
for(int d = 3; d <= sq; d += 2)
{
e = descompunere(n, d);
if(e)
{
if(e >= e_max)
{
e = e_max;
p_max = d;
}
sq = sqrt(n);
}
cout<<p_max;
}
#include <cmath>
int main()
{
int n, p_max, e_max = 0, sq;
cin>>n;
//Facem descompunerea cu 2 separat deoarece e singurul nr prim par
if(n % 2== 0)
{
int e = 0;
while(n % 2 == 0)
{
n /= 2;
e++;
}
p_max = 2;
e_max = e;
}
sq = sqrt(n);
//Cum singurul numar prim par este 2, vom verifica numai numerele impare (i += 2)
for(int d = 3; d <= sq; d += 2)
{
if(n % d == 0)
{
int e = 0;
while(n % d == 0)
{
n /= d;
e++;
}
if(e >= e_max)
{
e = e_max;
p_max = d;
}
sq = sqrt(n);
}
cout<<p_max;
}
//Prin functii
#include <iostream>
#include <cmath>
int descompunere(int & x, int d) /*Descompune numarul x dupa numarul prim d si returneaza exponentul lui d*/
{
int e = 0;
while(x % d == 0)
{
n /= d;
e++;
}
return e;
}
int main()
{
int n, p_max, e_max = 0, sq, e;
cin>>n;
e = descompunere(n, 2);
if(e)
{
p_max = 2;
e_max = e;
}
sq = sqrt(n);
//Cum singurul numar prim par este 2, vom verifica numai numerele impare (i += 2)
for(int d = 3; d <= sq; d += 2)
{
e = descompunere(n, d);
if(e)
{
if(e >= e_max)
{
e = e_max;
p_max = d;
}
sq = sqrt(n);
}
cout<<p_max;
}
Am facut in pascal, doar cateva linii de cod si gata problema :D. Am facut cu functie.
Problema si in C++
#invclude <iostream>
using namespace std;
int BigFactPrimi(int x);
{
int max=0;
for (int i:=2;i<=n div 2;i++)
{
nr=0;
while (x % i = 0)
{
nr++;
x:=x div i;
}
if (nr>max)
{
varnum=i;
max=nr;
}
}
return varnum;
}
int main()
{
int n;
cin>>n;
cout<<BigFactPrimi(n);
return 0;
}
Problema si in C++
#invclude <iostream>
using namespace std;
int BigFactPrimi(int x);
{
int max=0;
for (int i:=2;i<=n div 2;i++)
{
nr=0;
while (x % i = 0)
{
nr++;
x:=x div i;
}
if (nr>max)
{
varnum=i;
max=nr;
}
}
return varnum;
}
int main()
{
int n;
cin>>n;
cout<<BigFactPrimi(n);
return 0;
}

Vă mulțumim că ați accesat site-ul nostru dedicat Informatică. Sperăm că informațiile furnizate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag să reveniți și nu uitați să ne salvați la favorite!