>>> a // b
# //:是排除余数仅保留商的运算
>>> 123 % 10
3
>>> 123 // 10
12
>>> 12 % 10
2
>>> 12 // 10
1
>>> 1%10
1
>>> 1// 10
0
偶数的判断
>>> a % 2 == 0
>>> a//2 * 2 == a
奇偶性判断
常规的做法是对 2 取模,
if x%2 == 0:
使用位操纵(bit manipulation)的方法为,让该数与 1 相与:
if x & 1 == 0:
取出一个数的独立的各个位
def pos(x, m):
r = []
while x:
r.append(x%m)
x //= m
return r
欧几里得算法
def euclid(a, b):
if a < b:
t = a
a = b
b = t
return b if a % b == 0 else euclid(b, a%b)
保存辗转相除过程中经历的数:
def euclid(a, b):
if a < b:
t = a
a = b
b = t
r = []
if a % b != 0:
r.append(a%b)
r.extend(euclid(b, a%b))
return r
swap 的顺序
swap(a, b)
如果不使用异或算法
的话,通常需要借助一个中间变量;
t = a # 首先对 a 的值进行备份,保存到中间变量(t)
a = b # 将 b 的值传递到 a,因为已对 a 的值进行记录,此时可放心地对 a 的值进行覆盖
b = t # 将 t 中保存的 a 的值传递给b