403
Cerința
Subprogramul DivImpar are doi parametri, a și b, prin care primește două numere naturale din intervalul [1,105]. Subprogramul returnează cel mai mare divizor comun impar al numerelor a și b.
Scrieți definiția completă a subprogramului.
Exemplu
Dacă a=30 și b=60, subprogramul returnează valoarea 15.
Important
Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.
int DivImpar(int a , int b)
{
while(b)
{
int r = a % b;
a = b;
b = r;
}
if(a % 2 == 1)
return a;
else
{
int maxi = 0;
for(int d = 1 ; d * d <= a ; ++d)
{
if(a % d == 0)
{
if(d >= maxi && d % 2 == 1)
maxi = d;
if(a/d >= maxi && (a / d) % 2 == 1)
maxi = a/d;
}
}
return maxi;
}
}
Comentarii