Computer >> Máy Tính >  >> Lập trình >> Python

divmod () trong Python và ứng dụng của nó

Divmod () là một phần của thư viện tiêu chuẩn của python, lấy hai số làm tham số và cung cấp thương và phần còn lại của phép chia của chúng dưới dạng một bộ giá trị. Nó hữu ích trong nhiều ứng dụng toán học như kiểm tra tính chất chia hết của các số và xác định xem một số có phải là số nguyên tố hay không.

Cú pháp

Syntax: divmod(a, b)
a and b : b divides a
a and b are integers or floats

Ví dụ

Trong ví dụ dưới đây, hãy xem các trường hợp của cả số nguyên và số thực. Trên ứng dụng của divmod (), chúng cung cấp cho chúng ta một tuple kết quả, nó cũng có thể chứa các số nguyên và giá trị float.

# with integers
print("5 and 2 give:",divmod(5,2))
print("25 and 5 give:",divmod(25,5))

# with Floats
print("5.6 and 2 give:",divmod(5.6,2))
print("11.3 and 9.2 give:",divmod(11.3,9.2))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

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)

Sử dụng Zero

Nếu đối số đầu tiên là 0 thì chúng ta nhận được (0,0). Và Nếu đối số thứ hai là 0 thì chúng ta nhận được lỗi Zerodivision như mong đợi.

Ví dụ

# With first argument as zero
print("0 and 8 give:",divmod(0,8))

# With second argument as zero
print("8 and 0 give:",divmod(8,0))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

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

Kiểm tra tính chất chia hết

Nếu giá trị thứ hai của bộ sau khi chia là 0 thì chúng ta nói rằng số thứ nhất chia hết cho số thứ hai. Khác nó không thể chia được. Ví dụ dưới đây minh họa điều này.

Ví dụ

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)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

3
0
12 is divisible by 4

Kiểm tra xem Số có phải là Số nguyên tố hay không

Chúng ta có thể sử dụng divmod () để theo dõi các lời nhắc mà nó tạo ra khi chúng ta bắt đầu chia một số cho từng số bắt đầu bằng chính nó cho đến 1. Đối với một số nguyên tố, số lượng phần dư bằng 0 sẽ chỉ là một vì không có số nào khác ngoài chính nó sẽ chia nó hoàn hảo. Nếu số đếm không có phần dư lớn hơn 1 thì số đó không phải là số nguyên tố.

Ví dụ

num = 11
a = num
# counter the number of remainders with value zero
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')

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

11 is Prime