求最大公约数
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。
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=157
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=157
文章版权归作者所有,未经允许请勿转载。
THE END