题目描述

请编写一个方法,实现整数的乘法、减法和除法运算(这里的除指整除)。只允许使用加号。

减法

由加法实现减法,可以通过加上负数来实现:

1
2
3
def subtraction(a,b):
# 对b做按位取反+1,得到它的负数
return a + (~b + 1)

乘法

由加法实现乘法,比如5 * 3 = 15, 可以看做是:5 + 5 + 5 = 15, 即 a * b 可以看做是b个a相加

1
2
3
4
5
6
7
def multiplication(a,b):
if a == 0 or b == 0:
return 0
mul_result = 0
for i in range(b):
mul_result = mul_result + a
return mul_result

除法

由加法实现整除,比如10 / 2 = 5, 可以看做是:10-2-2-2-2-2 = 0,减了5次,所以商是5。
a / b = c可以看做是a一直减去b,直到a < b即被除数小于除数才停止,这期间一共减了c次,商是c。而减法可以用加法来实现

1
2
3
4
5
6
7
8
9
10
11
12
def division(a,b):
if b == 0:
print("除数不能为0")
return 0
if a == 0 or a < b:
return 0
c = 0
while a >= b:
a = a + (~b + 1)
c += 1
return c