﻿// Oszthatósággal kapcsolatos feladatok

#include <iostream>
using namespace std;

int main()
{
    // 1. Beolvasunk egy n pozitív egész számot. Írjuk ki az osztóit!
    // Pl. ha a beolvasott szám 20,
    // akkor írjuk ki: 1 2 4 5 10 20

    /*
    int n;
    cin >> n;

    for (int i = 1; i <= n; i++) {
        if (n%i == 0) {
            cout << i << " ";
        }
    }
    cout << endl;
    */
    

    // 2. Beolvasunk két pozitív egész számot. Írjuk ki a közös osztóikat!

    /*
    int n,m;
    cin >> n >> m;

    for (int i = 1; i <= n && i <= m; i++) {
        if (n%i == 0 && m%i==0) {
            cout << i << " ";
        }
    }
    cout << endl;
    */


    // 3. Adott az n pozitív egész. Írjuk ki, hogy prím-e.
    
    /*
    int n;
    cin >> n;

    int db = 0;

    for (int i = 1; i <= n; i++) {
        if (n%i == 0) {
            db = db + 1;
        }
    }

    if (db == 2) {
        cout << "prim" << endl;
    }
    else {
        cout << "nem prim" << endl;
    }
    */

    // Próbáljuk ugyanezt eldönteni kevesebb lépésből:

    // Ha d osztója n-nek, akkor n/d is osztója n-nek. Nem létezhet n/2-nél 
    // nagyobb valódi osztó, mert nem lenne párja.

    /*
    int n;
    cin >> n;

    int db = 2;
    if (n < 2)
        db = 1;

    for (int i = 2; i <= n/2; i++) {
        if (n%i == 0) {
            db = db + 1;
        }
    }

    if (db == 2) {
        cout << "prim" << endl;
    }
    else {
        cout << "nem prim" << endl;
    }
    */

    // Sőt, elég csak gyök(n)-ig menni, mert minden osztópárnak az egyik tagja
    // <= kell legyen, mint gyök(n).

    /*
    int n;
    cin >> n;

    int db = 1; // gyök(n)-nél <= osztók

    for (int i = 2; i*i <= n; i++) {
        if (n%i == 0) {
            db = db + 1;
        }
    }

    if (n > 1 && db == 1) {
        cout << "prim" << endl;
    }
    else {
        cout << "nem prim" << endl;
    }
    */


    // 4. Adott két pozitív egész szám, határozzuk meg a legnagyobb közös
    // osztójukat.

    int n,m;
    cin >> n >> m;
    int eredmeny;

    for (int i = 1; i <= n && i <= m; i++) {
        if (n%i == 0 && m%i==0) {
            eredmeny = i;
        }
    }

    cout << eredmeny << endl;


    // 5. (HF) Adott két pozitív egész szám, határozzuk meg a legkisebb közös
    // többszörösüket.


    return 0;
}
