#include<iostream>
#include<cstdio>
#include<math.h>
#include<ctime>
using namespace std;
__int64 gcd(__int64 a,__int64 b){return b ? gcd(b,a%b): a;}
__int64 stein(__int64 a,__int64 b)
{
if(a==b)return a;
if(a==0)return b;
if(b==0)return a;
if(a<b)swap(a,b);
printf("%I64d %I64d\n",a,b);
int r=0;
while(b>0)//b 小的
{
if(a%2==0 && b%2==0)
{
a=a>>1;
b=b>>1;
r++;
}
else if( a%2==0 && b%2!=0) a=a>>1;
else if(a%2!=0 && b%2==0 ) b=b>>1;
else a=(a-b)>>1;
if(a<b)swap(a,b);
}
return a<<r;
}
int main()
{
__int64 first,secend;
while(scanf("%I64d%I64d",&first,&secend)!=EOF)
{
clock_t start,finish;
int time1,time2;
__int64 ans;
start=clock();
ans=gcd(first,secend);
finish=clock();
time1= (finish=start)/1000;
printf("gcd用时:%d MS\n最大公约数: %I64d\n\n",time1,ans);
start=clock();
ans=stein(first,secend);
finish=clock();
time2= (finish=start)/1000;
printf("stein用时:%d MS\n最大公约数: %I64d\n",time2,ans);
}
return 0;
}
/*
*/