求两个数的最大公约数(位运算)

来源:互联网 发布:淘宝网买苹果手机可靠吗 编辑:程序博客网 时间:2024/05/18 06:18
#include <stdio.h>
#include <stdlib.h>
int gcd(int a,int b){
int c=1;
while(a-b){
if(a&1){
if(b&1){
if(a>b)a=(a-b)>>1;else b=(b-a)>>1;
}
else b>>=1;
}
else{
if(b&1)a>>=1;else c<<=1,a>>=1,b>>=1;
}
}
return c*a;
}
int main()
{
    int gcd(int a,int b);
    int a1,b1,num;
    scanf("%d %d",&a1,&b1);
    num=gcd(a1,b1);
    printf("%d",num);
    return 0;
}
0 0