##数学问题

#include <bits/stdc++.h>
using namespace std;
int main() {
    
    // (1) 求所有公约数 
    int a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
    for (int i = 1; i <= a; i++) {
        if (a % i == 0 && b % i == 0) {
            cout << i << endl;
        }
    }

    // (2) 求最大公约数 (穷举法) 
    int a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
    for (int i = a; i >= 1; i--) {
        if (a % i == 0 && b % i == 0) {
            cout << i << endl;
            break;
        }
    }
    
    // (3) 求最大公约数 (辗转相除法)     
    int a, b, c;
    cin >> a >> b;
    if (a < b) swap(a, b);
    c = a % b;
    while (c > 0) {
        a = b;
        b = c;
        c = a % b;
    }
    cout << b << endl;
    
    // 2、求最小公倍数
    
    // (1) 穷举法(小于 a * b 的所有的公倍数)
    
    int a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
    for (int i = b; i <= a * b; i++) {
        if (i % a == 0 && i % b == 0) {
            cout << i << endl;
        }
    } 

   // (2) 穷举法(最小公倍数)
    
    int a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
    for (int i = b; i <= a * b; i++) {
        if (i % a == 0 && i % b == 0) {
            cout << i << endl;
            break; 
        }
    }
        
   // (3) 穷举法(优化)
    
    int a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
    for (int i = b; i <= a * b; i += b) {
        if (i % a == 0 && i % b == 0) {
            cout << i << endl;
            break; 
        }
    }    
    
    // (4) 借助最大公约数法(终极优化)
    
    lcd(a, b) = (a * b) / gcd(a, b);
    
    // 3、判断素数
    
    // (1) 穷举法 
    
    return 0;
}
// 4. 数位处理 

// (1) 提取每一位数字 
int n, nn, num;
cin >> n;
nn = n; // 生成数字副本 
while (nn > 0) {
    num = nn % 10;          // 提取各位数字 
    cout << num << " ";     // 输出每位数字 
    nn = nn / 10;           // 将数字降位(3位变2位) 
} 
cout << endl;


// (2) 数字反转和判断回文数 
int n, nn, num, revN = 0;
cin >> n;
nn = n; // 生成数字副本 
while (nn > 0) {
    num = nn % 10;          // 提取各位数字 
    cout << num << " ";     // 输出每位数字 
    revN = revN * 10 + num; // 组合反转数 
    nn = nn / 10;           // 将数字降位(3位变2位) 
} 
cout << endl;
cout << "revN = " << revN << endl;   // 输出反转数 
if (n == revN) {            // 判断回文数 
    cout << "这是回文数" << endl;
}     

return 0;

}