#3614 FSuma_Bac
Cerința Subprogramul suma are doi parametri, a și b, prin care primește câte un număr natural din intervalul [1,104]. Subprogramul returnează suma divizorilor naturali comuni lui a și b. Scrieți definiția completă a subprogramului.
Exemplu Dacă a=20 și b=12, atunci subprogramul returnează valoarea 7 (1+2+4=7).
Important Soluția propusă va conține definiția funcției cerute. 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.
Răspunsuri la întrebare
Explicație:
Am atașat în imagine rezolvarea. Deci, ideea aici e simplă: trebuie să cauți divizorii comuni ai celor 2 numere și să-i aduni într-un s. Iar la sfârșit să returnezi acel s.
Cum găsești divizorii comuni ai 2 numere? Treci prin toate numerele de la 1 până la unul din ele, și dacă găsești un număr care se împarte la amândouă, înseamnă că e divizor comun.
Pentru exemplul dat de problemă, for-ul va fi de la 1 la 20, să zicem.
Pentru i = 1, verificăm dacă e divizor comun: se împarte exact a la 1? Se împarte b exact la 1? Da, deci e divizor comun, deci îl adunăm.
Pentru i = 2, verificăm dacă e divizor comun: se împarte exact a la 2? Și b se împarte exact la 2? Da, ambele, deci e divizor comun, deci îl adunăm.
Pentru i = 3, verificăm dacă e divizor comun: se împarte a exact la 3? Nu! Doar b se împarte exact la 3. Deci 3 e divizorul lui 12, dar nu e divizor comun, nu adunăm.
etc...
Răspuns:
int suma(int a, int b) {
int s = 0;
int i;
for(i = 1; i <= a; i++) {
if(a % i == 0 && b % i == 0) {
s = s + i;
}
}
return s;
}