为什么2 mod 4 = 2?


150

我很尴尬地问这样一个简单的问题。我的任期再过两周也不会开始,所以我不能请教教授,悬念会杀了我。

为什么2 mod 4 = 2?


45
因为2 = 0 * 4 + 2
p4bl0


1
在x / y中,结果由整数部分和分数部分组成。如果将分数部分与除数相乘,则得到余数。x =整数部分y +余数(即分数部分 y)。在这种情况下整数部分是0,并且余数是2
mshsayem

76
很高兴您有胆量提出这个问题。
铺成

模数是多少远等于两个数字。
Holex

Answers:


151

Mod只是表示您在执行除法运算后剩下的数。由于4变成2的零次,所以最后剩下2。


95

是余数,而不是除法数。

2 / 4 = 0R2
2 % 4 = 2

该符号%通常用于取模运算符,代替单词mod

对于x % 4,您得到下表(对于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


13

如果您使用香蕉和一群人,要容易得多。

假设您有1个香蕉和6人一组,您将表示:1 mod 6/ 1 % 6/ 1 modulo 6

每个小组中的每个人需要6根香蕉,以使其饱食和快乐。

因此,如果您有1根香蕉并需要与6个人共享,但只有每个组成员有1根香蕉(即6个人)时,您才能共享,那么您将有1根香蕉(剩余的,不与任何人共享)组),同样适用于2个香蕉。然后,您将剩下2根香蕉(什么都没有共享)。

但是,当您获得6根香蕉时,您应该感到很高兴,因为这样一来,6人一组中的每个成员都有1根香蕉,当您将6根香蕉全部共享给6个人时,剩下的就是0或没有香蕉了。

现在,对于7个香蕉和6个人,您将拥有7 mod 6 = 1,这是因为您给6个人每个香蕉1个人,剩下的则是1个人。

对于12 mod 66个人共享的12根香蕉,每个香蕉将拥有2根香蕉,其余为0。



8

几分钟前,我对此也感到困惑。然后,我在一张纸上做了长时间的除法,这很有意义:

  • 4变成2零次。
  • 4乘以0为0。
  • 您将那个零放在2下,然后减去剩下的2。

就计算机将要解决此问题的程度而言。计算机在那里停下来并返回2,这很有意义,因为这就是“%”(mod)的要求。

我们已经接受训练以保留小数点并继续前进,这就是为什么一开始可能会违反直觉的原因。


7

有人联系我,请我在问题评论中详细解释我的回答。所以这是我对那个人的答复,以防它可以帮助任何其他人:

模运算可为您提供欧几里得除法的其余部分(仅适用于整数,不适用于实数)。如果您的A等于A = B * C + D(且D <B),则A的欧几里德除以B的商为C,余数为D。如果将2除以4,则商为0,其余为2。

假设您有一个A对象(您无法剪切)。您想将相同数量的这些对象分发给B人。只要您有B个以上的对象,就可以给每个对象1个并重复。当剩余的对象少于B个时,您将停止并保留其余的对象。重复操作的次数称为商C。最后保留的对象数(称为D)是余数。

如果您有2个对象和4个人。您已经少于4个对象。这样每个人得到0个对象,而您保留2个。

这就是2模4为2的原因。


5

模运算符求和两个整数操作数的除法余数。这里有一些例子:

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

模数是数学除法表达式的余数,用整数表示。

因此,假设您在屏幕上的一个像素位于位置90,该位置的屏幕为100像素宽,再加上20,它将环绕到位置10。为什么...因为90 + 20 = 110因此110%100 = 10。

据我了解,我认为模是分数的整数表示。此外,如果向后执行表达式并将余数作为小数处理,然后将其添加到除数中,它将为您提供原始答案。

例子:

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

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

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

反向工程以:

                        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

当将2除以4时,剩下的2或剩下的2将得到0。模数只是除以数字后的余数。


1

我认为您对模数方程的读取方式感到困惑。

当我们写一个除法方程 2/4将2除以4。

当写模方程时,例如2 % 4我们正在除法2 by 4(将2乘以4)并返回余数。


1

MOD是余数运算符。这就是为什么2 mod 4给出2作为余数的原因。4 * 0 = 0,然后2-0 = 2。为了更清楚地说明,尝试对6 mod 4或8 mod 3进行相同操作。


1

这是欧几里得算法。

例如

a mod b = k * b + c => a mod b = c,其中k是整数,c是答案

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

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

所以你的答案是

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


1

对于:

2 mod 4

我们可以使用经过思考后想出的这个小公式,也许它已经定义在我不知道但对我有用的地方,并且它确实有用。

A mod B = C 其中C是答案

K * B - A = |C| 其中K是B容纳在A中的次数

2 mod 4 将是:

0 * 4 - 2 = |C|

C = |-2| => 2

希望对你有帮助 :)


1

Mod操作带有提醒功能。

这称为模块化算术。

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

1

要回答模x % y,您要问两个问题:

A-多少次y进去x没有剩余?对于2%4,该值为0。

B-您需要增加多少才能从中得到x?要从0返回2,您需要2-0,即2。

这些可以在一个问题来概括像这样:你会多少需要添加到该师的整数上下的结果x通过y,报复x

“整数”表示仅关注整数而不关注分数。

分数除法余数(例如.283849)在模数中不重要,因为模数仅处理整数。


0

为了以一种直观的方式进行思考,请想象一下一个钟面,在您的特定示例中,该钟面仅变为4而不是12。如果您从时钟的4开始(就像从零开始),然后顺时针旋转它2个“小时”,您将落在2上,就像顺时针旋转6个“小时”也将您落在2上(6 mod 4 == 2就像2 mod 4 == 2)。


6
这实际上很令人困惑。
乔·菲利普斯

@ do3boy:钟面的想法是一种非常简单的方法,可以准确地描述模数的事实。除了使用24h格式进行解释而不是修改可用位置的数量会更容易。
Atmocreations

0

这可能是提及modr()函数的好时机。它返回整个除法器的其余部分。

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")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.