Tại sao 2 mod 4 = 2?


150

Tôi xấu hổ khi hỏi một câu hỏi đơn giản như vậy. Nhiệm kỳ của tôi không bắt đầu thêm hai tuần nữa vì vậy tôi không thể hỏi giáo sư và sự hồi hộp sẽ giết chết tôi.

Tại sao 2 mod 4 = 2?


45
Bởi vì 2 = 0 * 4 + 2.
p4bl0


1
Trong kết quả x / y bao gồm một phần nguyên và một phần phân số. Nếu bạn nhân phần phân số với số chia, bạn sẽ nhận được phần còn lại. Và x = Số nguyên phần y + Phần còn lại (tức là phần Phân số y). Trong trường hợp này, phần nguyên là 0 và phần còn lại là 2.
mshsayem

76
rất vui vì bạn đã can đảm để hỏi câu hỏi đó
mở

các modulo là nhiều hơn nhiều so với bằng chia hai số.
holex

Câu trả lời:


151

Mod chỉ có nghĩa là bạn lấy phần còn lại sau khi thực hiện phép chia. Vì 4 đi vào 2 lần không, bạn kết thúc với 2 phần còn lại.


95

Modulo là phần còn lại, không phân chia.

2 / 4 = 0R2
2 % 4 = 2

Dấu hiệu %thường được sử dụng cho toán tử modulo, thay cho từ mod.

Đối với x % 4, bạn nhận được bảng sau (cho 1-10)

 x x%4
------
 1  1
 2  2
 3  3
 4  0
 5  1
 6  2
 7  3
 8  0
 9  1
10  2

18

Modulo (mod,%) là toán tử còn lại.

2%2 = 0 (2/2 = 1 remainder 0)
1%2 = 1 (1/2 = 0 remainder 1)
4%2 = 0 (4/2 = 2 remainder 0)
5%2 = 1 (5/2 = 2 remainder 1)

3
Và giải thích "dài dòng": 2 = 4 · 0 + 2 ;-)
Michael Krelin - hacker

13

Dễ dàng hơn nhiều nếu bạn sử dụng chuối và một nhóm người.

Giả sử bạn có 1 quả chuối và nhóm 6 người, điều này bạn sẽ bày tỏ: 1 mod 6/ 1 % 6/ 1 modulo 6.

Bạn cần 6 quả chuối cho mỗi người trong nhóm để được ăn no và hạnh phúc.

Vì vậy, nếu sau đó bạn có 1 quả chuối và cần chia sẻ với 6 người, nhưng bạn chỉ có thể chia sẻ nếu bạn có 1 quả chuối cho mỗi thành viên trong nhóm, tức là 6 người, thì bạn sẽ có 1 quả chuối (phần còn lại, không chia sẻ cho bất kỳ ai trong nhóm), cùng đi cho 2 quả chuối. Sau đó, bạn sẽ có 2 quả chuối như phần còn lại (không có gì được chia sẻ).

Nhưng khi bạn nhận được 6 quả chuối, thì bạn nên vui mừng, vì sau đó có 1 quả chuối cho mỗi thành viên trong nhóm 6 người, và số còn lại là 0 hoặc không còn chuối khi bạn chia sẻ tất cả 6 quả chuối trên 6 người.

Bây giờ, cho 7 quả chuối và 6 người trong nhóm, sau đó bạn sẽ có 7 mod 6 = 1, điều này bởi vì bạn đã cho 6 người mỗi quả chuối, và 1 quả chuối là phần còn lại.

Cho 12 mod 6hoặc 12 quả chuối được chia sẻ trên 6 người, mỗi người sẽ có hai quả chuối và số còn lại là 0.



8

Tôi cũng bối rối về điều này, chỉ một vài phút trước đây. Sau đó, tôi đã phân chia tay dài trên một tờ giấy và nó có ý nghĩa:

  • 4 đi vào 2 lần không.
  • 4 lần 0 là 0.
  • Bạn đặt số 0 đó dưới 2 và trừ đi 2.

Đó là xa như máy tính sẽ có vấn đề này. Máy tính dừng ở đó và trả về 2, điều này hợp lý vì đó là những gì "%" (mod) đang yêu cầu.

Chúng tôi đã được đào tạo để đưa vào số thập phân và tiếp tục, đó là lý do tại sao điều này có thể phản trực giác lúc đầu.


7

Ai đó đã liên lạc với tôi và yêu cầu tôi giải thích chi tiết hơn câu trả lời của tôi trong phần bình luận của câu hỏi. Vì vậy, đây là những gì tôi đã trả lời cho người đó trong trường hợp nó có thể giúp đỡ bất cứ ai khác:

Hoạt động modulo cung cấp cho bạn phần còn lại của sự phân ly eidianidian (chỉ hoạt động với số nguyên, không phải số thực). Nếu bạn có A sao cho A = B * C + D (với D <B), thì thương số của phép chia số nhân của A cho B là C và phần còn lại là D. Nếu bạn chia 2 cho 4, thương số là 0 và phần còn lại là 2.

Giả sử bạn có một đối tượng A (mà bạn không thể cắt). Và bạn muốn phân phối cùng một lượng đối tượng đó cho người B. Miễn là bạn có nhiều hơn B đối tượng, bạn cung cấp cho mỗi đối tượng 1 và lặp lại. Khi bạn có ít hơn B đối tượng, bạn dừng lại và giữ các đối tượng còn lại. Số lượng thời gian bạn đã lặp lại thao tác, hãy gọi số C đó là thương số. Số lượng đối tượng bạn giữ ở cuối, hãy gọi nó là D, là phần còn lại.

Nếu bạn có 2 đối tượng và 4 người. Bạn đã có ít hơn 4 đối tượng. Vì vậy, mỗi người nhận được 0 đối tượng, và bạn giữ 2.

Đó là lý do tại sao 2 modulo 4 là 2.


5

Toán tử modulo ước tính phần còn lại của phép chia hai toán hạng nguyên. Đây là vài ví dụ:

23 % 10 evaluates to 3 (because 23/10 is 2 with a remainder of 3)
50 % 50 evaluates to 0 (50/50 is 1 with a remainder of 0)
9 % 100 evaluates to 9 (9/100 is 0 with a remainder of 9)

4

mod có nghĩa là reaminder khi chia cho. Vậy 2 chia cho 4 là 0 với 2 còn lại. Do đó 2 mod 4 là 2.


4

Modulo là phần còn lại, được biểu thị dưới dạng một số nguyên, của biểu thức phân chia toán học.

Vì vậy, giả sử bạn có một pixel trên màn hình ở vị trí 90 trong đó màn hình rộng 100 pixel và thêm 20 pixel, nó sẽ bao quanh vị trí 10. Tại sao ... vì 90 + 20 = 110 do đó 110% 100 = 10.

Để tôi hiểu nó, tôi coi modulo là biểu diễn số nguyên của số phân số. Hơn nữa, nếu bạn thực hiện biểu thức ngược và xử lý phần còn lại dưới dạng số phân số và sau đó được thêm vào ước số, nó sẽ cung cấp cho bạn câu trả lời ban đầu của bạn.

Ví dụ:

    100
(A) ---  =  14 mod 2
     7

    123
(B) ---  =  8 mod 3
     15

     3
(C) ---  =  0 mod 3
     4

Được thiết kế lại để:

                        2      14(7)    2       98    2     100
 (A) 14 mod 2  =  14 + ---  =  ----- + ---  =  --- + ---  = ---
                        7        7      7       7     7      7

                      3      8(15)    3      120    3      123
 (B) 8 mod 3  =  8 + ---  =  ----- + ---  =  --- + ---  =  ---
                      15       15     15      15    15      15

                      3       3
 (B) 0 mod 3  =  0 + ---  =  ---
                      4       4

2

Khi bạn chia 2 cho 4, bạn nhận được 0 với 2 còn lại hoặc còn lại. Modulo chỉ là phần còn lại sau khi chia số.


1

Tôi nghĩ rằng bạn đang nhận được nhầm lẫn về cách đọc phương trình modulo.

Khi chúng ta viết một phương trình chia như 2/4chúng ta chia 2 cho 4.

Khi một phương trình modulo được viết như 2 % 4chúng ta đang chia 2 by 4(nghĩ 2 trên 4) và trả về phần còn lại.


1

MOD là toán tử còn lại. Đó là lý do tại sao 2 mod 4 cho 2 là phần còn lại. 4 * 0 = 0 và sau đó 2-0 = 2. Để làm rõ hơn, hãy thử làm tương tự với 6 mod 4 hoặc 8 mod 3.


1

Đây là thuật toán Euclid.

ví dụ

a mod b = k * b + c => a mod b = c, trong đó k là số nguyên và c là câu trả lời

4 mod 2 = 2 * 2 + 0 => 4 mod 2 = 0

27 mod 5 = 5 * 5 + 2 => 27 mod 5 = 2

vậy câu trả lời của bạn là

2 mod 4 = 0 * 4 + 2 => 2 mod 4 = 2


1

Dành cho:

2 mod 4

Chúng ta có thể sử dụng công thức nhỏ này mà tôi đã nghĩ ra sau khi suy nghĩ một chút, có thể nó đã được xác định ở đâu đó mà tôi không biết nhưng hiệu quả với tôi và nó thực sự hữu ích.

A mod B = C Trong đó C là câu trả lời

K * B - A = |C| Trong đó K là bao nhiêu lần B phù hợp với A

2 mod 4 sẽ là:

0 * 4 - 2 = |C|

C = |-2| => 2

Hi vọng nó sẽ giúp ích cho bạn :)


1

Mod hoạt động với lời nhắc nhở.

Đây được gọi là số học mô-đun.

 a==b(mod m) 
 then m|(a-b)
 a-b=km 
 a=b+km
 So, 2=2+0*4

1

Để trả lời một modulo x % y, bạn hỏi hai câu hỏi:

A- Bao nhiêu lần yđi vào xmà không có phần còn lại? Đối với 2% 4 đó là 0.

B- Bạn cần thêm bao nhiêu để có được từ đó trở lại x? Để có được từ 0 trở về 2, bạn sẽ cần 2-0, tức là 2.

Những câu hỏi này có thể được tóm tắt trong một câu hỏi như vậy: Bạn sẽ cần thêm bao nhiêu vào kết quả số nguyên-ish của phép chia xtheo y, để lấy lại x?

Theo số nguyên, nó chỉ có nghĩa là toàn bộ số và không phải là phân số nào được quan tâm.

Phần còn lại phân chia phân số (ví dụ: 283849) không được quan tâm trong modulo vì modulo chỉ liên quan đến số nguyên.


0

Đối với một cách trực quan để suy nghĩ về nó, hãy hình dung một mặt đồng hồ, trong ví dụ cụ thể của bạn, chỉ chuyển sang 4 thay vì 12. Nếu bạn bắt đầu từ 4 trên đồng hồ (giống như bắt đầu từ 0) và đi xung quanh theo chiều kim đồng hồ để 2 "giờ", bạn hạ cánh trên 2, giống như đi vòng quanh theo chiều kim đồng hồ trong 6 "giờ" cũng sẽ hạ cánh bạn trên 2 (6 mod 4 == 2 giống như 2 mod 4 == 2).


6
Điều đó thực sự khá khó hiểu.
Joe Phillips

@ do3boy: ý tưởng về mặt đồng hồ là một phương pháp rất đơn giản và dễ dàng để mô tả chính xác thực tế của modulo. ngoại trừ việc sử dụng định dạng 24h sẽ dễ dàng hơn để giải thích thay vì sửa đổi số lượng vị trí khả dụng.
Atmocreations

0

Đây có thể là thời điểm tốt để đề cập đến hàm modr (). Nó trả về cả phần và phần còn lại của một bộ phận.

print("\n 17 // 3 =",17//3," # Does the same thing as int(17/3)")
print(" 17 %  3 =",17%3," # Modulo division gives the remainder.")
whole, remain = divmod(17,3)
print(" divmod(17,3) returns ->",divmod(17,3),end="")
print(" because 3 goes into 17,",whole,"times with a remainder of",remain,end=".\n\n")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.