A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
|
|
@ -0,0 +1 @@
|
|||
from fractions import gcd
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
def gcd_iter(u, v):
|
||||
while v:
|
||||
u, v = v, u % v
|
||||
return abs(u)
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
def gcd(u, v):
|
||||
return gcd(v, u % v) if v else abs(u)
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
def gcd_bin(u, v):
|
||||
u, v = abs(u), abs(v) # u >= 0, v >= 0
|
||||
if u < v:
|
||||
u, v = v, u # u >= v >= 0
|
||||
if v == 0:
|
||||
return u
|
||||
|
||||
# u >= v > 0
|
||||
k = 1
|
||||
while u & 1 == 0 and v & 1 == 0: # u, v - even
|
||||
u >>= 1; v >>= 1
|
||||
k <<= 1
|
||||
|
||||
t = -v if u & 1 else u
|
||||
while t:
|
||||
while t & 1 == 0:
|
||||
t >>= 1
|
||||
if t > 0:
|
||||
u = t
|
||||
else:
|
||||
v = -t
|
||||
t = u - v
|
||||
return u * k
|
||||
Loading…
Add table
Add a link
Reference in a new issue