Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int v[500];
int main()
{
int a, b, t, len=0 ;
cin >> a >> b;
if (a>b) { t=a; a=b; b=t; }
for (t=1; t*t<a; ++t)
{
if (a%t==0)
{
if (b%t==0) { cout << t << " ";
if (b%(a/t)==0) { ++len; v[len]=a/t; } }
else if (b%(a/t)==0) { ++len; v[len]=a/t; }
}
}
if (t*t==a && b%t==0) cout << t << " ";
for (t=len; t>=1; --t) cout << v[t] << " ";
cout << endl;
return 0;
}
Explicație:
Pentru 24 36, divizorii comuni sunt 1 2 3 4 6 12
Algoritmul dat ii gaseste eficient in ordinea 1 12 2 6 3 4
deoarece afisarea este in crestere, prima jumatate de divizori se afiseaza direct, 1 2 3, iar a doua jumatate se memorizeaza intr/un vector, 12 6 4
Vecorul apoi e afisat in ordinea inversa 4 6 12
Astfel obtinem 1 2 3 4 6 12
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.