Subprogramul factori are doi parametri, n şi m, prin care primește câte un număr natural din
intervalul [1,109]. Subprogramul returnează numărul valorilor prime care se regăsesc atât în
descompunerea în factori primi a lui n, cât și în descompunerea în factori primi a lui m.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=750 şi m=490, atunci subprogramul returnează 2 (750=2353, 490=2572).
Răspuns:
int factori (int n, int m)
{
int nr_prime = 0;
for (int i=2;i<=n && i<=m;i++)
if (n%i==0 && m%i==0)
{
int prim=1;
for (int j=2;j*j<=i;j++)
if (i%j==0)
{
prim = 0;
break;
}
if (prim == 1) nr_prime++;
}
return (nr_prime);
}
Programul care testează funcționarea corectă:
#include <iostream>
using namespace std;
int factori (int n, int m)
{
int nr_prime = 0;
for (int i=2;i<=n && i<=m;i++)
if (n%i==0 && m%i==0)
{
int prim=1;
for (int j=2;j*j<=i;j++)
if (i%j==0)
{
prim = 0;
break;
}
if (prim == 1) nr_prime++;
}
return (nr_prime);
}
int main ()
{
int x, y;
cout << "n = ";
cin >> x;
cout << "m = ";
cin >> y;
cout << "Nr factori primi comuni = " << factori (x, y);
return 0;
}