最大公约数总时间限制: 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; }