Salut am nevoie de ajutor urgent la o problema:
Să se scrie un program care citeşte un număr natural n şi determină factorul care apare în descompunerea în factori primi a lui n la puterea cea mai mare.
Răspunsuri la întrebare
Răspuns de
1
#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;
}
eudanialex:
as prefera ceva mai simplu
Alte întrebări interesante
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Informatică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă