|
很经典的算法。小学老师讲的最大公约数一般用短除法,要经过很多次的试除,在c++里面实现并不容易,我们在这里使用辗转相除法。
设求a b两数的最大公约数,a=80,b=48,实际上等价于求b(=48)和 a%b(=32) 的最大公约数,直到a%b=0,这个是最大公约数就是b
- #include <iostream>
- using namespace std;
- int a,b,c;
- int main()
- {
- cin>>a>>b;
- c=a%b;
- while (c!=0)
- {
- a=b;b=c;c=a%b;
- }
- cout<<b;
- }
复制代码
|
|