题目:输出任意两个自然数,求他们的最大公约数
方法一:模拟法
方法二:欧几里得算法
欧几里德算法和扩展欧几里德算法可使用多种编程语言实现。
求解方法:
1、a/b=q...r1 .
2.若r1=0,则a和b的最大公约数为b
3.若r1≠0,则继续做除法: b/r1=q。。。r2
4.若r2=0,则a和b的最大公约数为r1
5.若r2≠0,则继续做除法:r1/r2=q....r3.
6.如此重复下去知道出现整除位置,余数为0时的除数就是a和b的最大公约数
代码如下
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, tmp;
cin>>a>>b;
while(tmp=a%b) {
a=b;
b=tmp;
}
cout<<b<<endl;
return 0;
}
浙公网安备 33010602011771号