0001 __int64 gcdEU_R ( __int64 a, __int64 b ) { //assert: 0 <= min(a, b) 0002 return ( 0 == b ) ? a : gcdEU_R ( b, a % b ); 0003 } 0004 0005 __int64 gcdEU ( __int64 a, __int64 b ) { //assert: 0 <= min(a, b) 0006 while ( true ) { 0007 if ( 0 == a ) return b; 0008 if ( 0 == b ) return a; 0009 if ( a > b ) a %= b; 0010 else b %= a; 0011 } 0012 }