华师一附中OI组
标题:
辗转相除法求最大公约数
[打印本页]
作者:
admin
时间:
2018-6-28 19:46
标题:
辗转相除法求最大公约数
很经典的算法。小学老师讲的最大公约数一般用短除法,要经过很多次的试除,在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;
}
复制代码
作者:
高歌岭
时间:
2018-7-15 15:46
#include<iostream>
using namespace std;
int a,b,c;
int main()
{
cin>>a>>b;
while(b>0)
{
c=a;
a=b;
b=c%b;
}
cout<<a;
return 0;
}
复制代码
作者:
admin
时间:
2018-7-15 21:13
楼上的做法感觉有问题!
作者:
JASONZHU
时间:
2018-7-16 23:00
#include<iostream>
using namespace std;
int a,b,s;
int main()
{
cin>>a>>b;
s=a%b;
while(s!=0)
{
a=b;
b=s;
s=a%b;
}
cout<<b;
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2