Informatică, întrebare adresată de alexandrumorus, 9 ani în urmă

Buna ziua! La problema DivImpar de pe Pbinfo 0 puncte.


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(1)

{

c = a;cop = b;

while (b)

{

r = a % b;

a = b;

b = r;

}

if(a % 2 == 0)

{

a = c / a;

b = cop / a;

}

else

return a;

}

}

stie cineva ce gresesc?

Răspunsuri la întrebare

Răspuns de boiustef
13

Răspuns:

int DivImpar(int a, int b)

{

   int r = a % b;

   while(r != 0)

   {

       a = b;

       b = r;

       r = a % b;

   }

   while (b%2==0) b/=2;

   return b;

}

Explicație:


alexandrumorus: Ms muult!
Alte întrebări interesante