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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!