coding notesleetcode-BitOperationsTony Cao2024-03-252024-10-29常见的数字之间的运算法则1234567# 进位和余位问题,模拟进位相加法,以为10进制为例res = (num + add) // 10 # 如果使用同一个add,这res在前,因为add会在第二步被更新add = (num + add) % 10# int相除,向上取整res = ceil(x, y)res = (x + y - 1) // y 最大公约数123456789101112131415161718192021# 求x,y的最大公约数# 短除法,def func1(a,b): res=1 for i in range(2,min(a,b)): while(a % i == 0 and b % i == 0): res*=i a/=i b/=i return res# 辗转相除法,def func2(num1, num2): m = max(num1, num2) n = min(num1, num2) r = m % n while r != 0: m = n n = r r = m % n return r 最小公倍数123456# 求x,y的最小公倍数# 两数之积(s) = 最小公倍数(a) * 最大公约数(b)s = abs(x * y)b = func(num1, num2)a = s // b