首页 > 编程知识 正文

最大公约数 算法,最大公约数的求法

时间:2023-05-05 11:38:55 阅读:177064 作者:1680

最大公约数总时间限制: 1000ms内存限制: 65536kB

描述

给出两个正整数,求出它们的最大公约数。

输入

有多个数据集,每行有两个正整数,不超出可以用int表示的范围。

输出

每行对应于输出最大公约数。

样例输入

4 88 6200 300 样例输出

42100 提示

由于系统的测试文件中有很多数据组,同学们在程序中写入循环读取数据,写入判断文件是否读完的代码。

如果您不知道如何处理,请参阅以下两个模板:

c这样写。 while(Cinxy ) )求出x和y的最大公约数的代码) c这样写道。 while(scanf ) %x%y ',x,y )!=eof}{x求x和y最大公约数的代码} AC代码

#includebits/stdc .h //枚举法求最小公约数的using namespace std; int main () {int a,b,ans=0; wile(cinab ) for ) intI=1; I=min(a,b ); I ) if(a%I==0b%I==0) {ans=i; }}coutansendl; } return 0; } #includebits/stdc .h //基于分解因子法的最大公约数using namespace std; int a、b、ans=1; voidgcd(inta,int b ) { for } intx=2; x*x=min(a,b ); x () while ) a%x==0b%x==0) {a/=x; b/=x; ans*=x; }while(a%x==0) a/=x; wile(b%x==0) b/=x; (if ) a%b==0) ans*=b; ELSEif(b%a==0) ans*=a; coutansendl; } int main () (while ) cinab ) ) gcd ) a,b ); ans=1; } return 0; } #includebits/stdc .h //通过辗转相除求出最大公约数using namespace std; intgcd(inta,int b ) if ) b==0)返回a; ElseReturngcd(b,a%b ); (}int main ) ) {int a,b; while(cinab ) {coutgcd(a ) a,b ) endl; } return 0; } #includebits/stdc .h //用二进制方法求最大公约数using namespace std; intgcd(inta,int b ) if ) a==b ) return a; if(ab )返回gcd (b ) b,a; if(a1==0) return (B1==0)? 2*gcd(a/2,b/2 ) :gcd ) a/2,b ); return(B1==0)? GCD(a,b/2 ) :gcd(b ) b,a-b ); (}int main ) ) {int a,b; while(cinab ) {coutgcd(a ) a,b ) endl; } return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。