Cerința
Subprogramul DivImpar
are doi parametri, a
și b
, prin care primește două numere naturale din intervalul [1,10
5
]
. 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; } }