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
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
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă