50% au considerat acest document util (2 voturi)
2K vizualizări2 pagini

Sub III.1.cpp

Subprogramul primește un număr natural n și returnează cel mai mare divizor prim al lui n și puterea la care apare în descompunerea în factori primi a lui n.
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca RTF, PDF, TXT sau citiți online pe Scribd
50% au considerat acest document util (2 voturi)
2K vizualizări2 pagini

Sub III.1.cpp

Subprogramul primește un număr natural n și returnează cel mai mare divizor prim al lui n și puterea la care apare în descompunerea în factori primi a lui n.
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca RTF, PDF, TXT sau citiți online pe Scribd

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