分析与解答:
方法一:减法
使被整除数不断减去除数,直到相减的结果小于除数为止,此时,商就为相减的次数,余数为最后相减的差。
def divide(m, n):
print(str(m)+"除以"+str(n))
res = 0
remain = m
# 被除数减除数,直到相减的结果小于除数为止
while m > n:
m = m - n
res += 1
remain = m
print("商为:"+str(res)+"余数:"+str(remain))
if __name__ == "__main__":
m = 14
n = 4
divide(m, n)
方法二:移位法
def divide(m, n):
print(str(m) + "除以" + str(n))
result = 0
while m >= n:
multi = 1
# multi*n>m/2时结束循环
while multi * n <= (m >> 1):
multi <<= 1
result += multi
# 相减的结果进入下次循环
m -= multi * n
print("商为:" + str(result) + "余数:" + str(m))