Sunteți pe pagina 1din 2

Subprogramul putere are trei parametri:

· n, prin care primește un număr natural din intervalul [2,109];


· d și p, prin care furnizează divizorul prim, d, care apare la cea mai mare putere, p, în
descompunerea în factori primi a lui n; dacă există mai mulți astfel de divizori se afișează cel mai
mare dintre ei.

Scrieți definiția completă a subprogramului.


Exemplu: dacă n=10780, atunci, în urma apelului, d=7 şi p=2 (10780=2257211).

Răspuns:

void putere (int n, int* d, int* p)


{
for (int i=2;i<=n;i++)
if (n%i==0)
{
int prim=1;
for (int j=2;j*j<=i;j++)
if (i%j==0)
{
prim = 0;
break;
}
if (prim == 1)
{
int putere=0;
int m=n;
while (m%i == 0)
{
putere++;
m /= i;
}
if (putere>=*p)
{
*d=i;
*p=putere;
}
}
}
}

Programul care testează funcționarea corectă:

#include <iostream>

using namespace std;

void putere (int n, int* d, int* p)


{
for (int i=2;i<=n;i++)
if (n%i==0)
{
int prim=1;
for (int j=2;j*j<=i;j++)
if (i%j==0)
{
prim = 0;
break;
}
if (prim == 1)
{
int putere=0;
int m=n;
while (m%i == 0)
{
putere++;
m /= i;
}
if (putere>=*p)
{
*d=i;
*p=putere;
}
}
}
}

int main ()
{
int x, divizor, expon;
cout << "n = ";
cin >> x;
putere (x, &divizor, &expon);
cout << "Divizor prim maxim, la putere maxima = " << divizor;
cout << "\nExponent = " << expon;
return 0;
}

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