求最大公约数

Description

求两个正整数m和n的最大公约数。

Input

输入两个正整数n,m(int范围内)

Output

输出n和m的公约数

Sample Input

8 4

Sample Output

4

HINT

欧几里得算法的原理是:对于整数a和b,其中a > b,a和b的最大公约数等于b和a模b(即a除以b的余数)的最大公约数。通过不断重复这个过程,最终当其中一个数变为0时,另一个数就是它们的最大公约数。

python解法

#输入2个整数
n, m = map(int,input().split())

# 欧几里得算法实现
while m != 0:
    n, m = m, n % m

# 输出最大公约数
print(n)

c++解法

#include<bits/stdc++.h>  // 引入几乎所有的标准库
using namespace std;   // 使用std命名空间
int main() {
    int n, m, t;   // 定义三个整数变量n, m, t。其中n和m是要计算最大公约数的两个数,t用于存储中间结果。

    cin >> n >> m;  // 从标准输入读取两个整数n和m。

    t = n % m;  // 计算n除以m的余数,并将其存储在t中。

    // 开始欧几里得算法的主循环,该循环将持续进行,直到t为0。
    while(t != 0) {
        n = m;  // 将m的值赋给n。
        m = t;  // 将t的值赋给m。
        t = n % m;  // 再次计算n除以m的余数,并将其存储在t中。
    }

    cout << m << endl;  // 当t为0时,m中存储的就是n和m的最大公约数,输出m的值。

    return 0;  // 程序结束,返回0。
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END