Python 中的 divmod() 及其应用

pythonserver side programmingprogramming

divmod() 是 Python 标准库的一部分,它以两个数字为参数,并以元组形式给出它们的商和余数。它在许多数学应用中很有用,例如检查数字的可整除性和确定数字是否为素数。

语法

语法:divmod(a, b)
a 和 b:b 除以 a
a 和 b 是整数或浮点数

示例

在下面的示例中,查看整数和浮点数的情况。在应用 divmod() 时,它们会为我们提供一个结果元组,该元组也可以包含整数和浮点值。

# 使用整数
print("5 and 2 give:",divmod(5,2))
print("25 and 5 give:",divmod(25,5))

# 使用浮点数
print("5.6 and 2 give:",divmod(5.6,2))
print("11.3 and 9.2 give:",divmod(11.3,9.2))

输出

运行上述代码得到以下结果 −

5 and 2 give: (2, 1)
25 and 5 give: (5, 0)
5.6 and 2 give: (2.0, 1.5999999999999996)
11.3 and 9.2 give:(1.0, 2.1000000000000014)

使用零

如果第一个参数为零,则我们得到 (0,0)。如果第二个参数为零,则我们按预期得到 Zerodivision 错误。

示例

# 第一个参数为零
print("0 and 8 give:",divmod(0,8))

# 第二个参数为零
print("8 and 0 give:",divmod(8,0))

输出

运行上述代码得到以下结果 −

0 and 8 give: (0, 0)
Traceback (most recent call last):
File "xxx.py", line 6, in
print("8 and 0 give:",divmod(8,0))
ZeroDivisionError: integer division or modulo by zero

检查可整除性

如果除法后的元组的第二个值为 0,则我们说第一个数字可以被第二个数字整除。否则它不能被整除。下面的例子说明了这一点。

示例

m = 12
n = 4
quotient,remainder = divmod(m,n)
print(quotient)
print(remainder)
if (remainder==0):
   print(m,' is divisible by ',n)
else:
   print(m,' is not divisible by ',n)

输出

运行上述代码得到以下结果 −

3
0
12 is divisible by 4

检查数字是否为质数

我们可以使用 divmod() 来跟踪当我们开始用数字除以从其本身到 1 的每个数字时它生成的提醒。对于质数,零余数的数量将只有 1,因为除了它本身之外没有其他数字可以完美地整除它。如果零余数的数量大于 1,则该数字不是质数。

示例

num = 11
a = num
# 计算值为零的余数的数量
count = 0
while a != 0:
   q, r = divmod(num, a)
   a -= 1
   if r == 0:
      count += 1
if count > 2:
   print(num, 'is not Prime')
else:
   print(num, 'is Prime')

输出

运行上述代码得到以下结果 −

11 is Prime

相关文章