Advertisement
Guest User

Untitled

a guest
Jul 7th, 2014
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.32 KB | None | 0 0
  1. sub gcd {
  2.     my ($u, $v) = @_;
  3.  
  4.     return $v if !$u || $u == $v;
  5.     return $u if !$v;
  6.  
  7.     my $shift = 0;
  8.     while (!(($u | $v) & 1)) {
  9.         $u >>= 1;
  10.         $v >>= 1;
  11.         ++$shift;
  12.     }
  13.  
  14.     $u >>= 1 while !(u & 1);
  15.  
  16.     do {
  17.         $v >>= 1 while !(v & 1);
  18.    
  19.         ($u,$v)=($v,$u) if $u > $v;
  20.         $v -= $u;
  21.     } while $v;
  22.    
  23.     return $u << shift;
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement