为什么2模4 = 2?

我不好意思问这么简单的问题。我的学期还有两个星期才开始,所以我不能问教授,这种悬念会要了我的命。

为什么2模4 = 2?

301957 次浏览

模(mod,%)是 Remainder 操作符。

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)

Mod 是指除以。所以2除以4等于0剩下2。因此2模4等于2。

是余数,不是除数。

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

Mod 只是表示在执行除法之后取余数。因为4进入2的0次方,你得到的结果是2的余数。

2/4 = 0,余数为2

为了更直观地思考这个问题,请想象一个时钟面,在您的特定示例中,时钟面只到4,而不是12。如果你从4开始计时(就像从0开始计时一样) ,然后顺时针绕着它转2个“小时”,你会降落在2上,就像顺时针绕着它转6个“小时”一样,你也会降落在2上(6模4 = = 2,就像2模4 = = 2)。

当你把2除以4,你得到0,剩下2或者剩下2。模就是除数后的余数。

有人联系我,让我在问题的评论中更详细地解释我的答案。以下是我对那个人的回答,以防它能帮到其他人:

模除给出了欧几里得除法的其余部分 (它只对整数有效,而不是实数) A = B * C + D (D < B) ,那么 A 的欧氏除法的商 乘以 B 等于 C,余数等于 D。如果你把2除以4,商 是0,余数是2。

假设你有一个物体(你不能切割) ,你想要 把同样数量的这些物品分发给 B 人。只要 你有多于 B 的对象,你给每个对象1,然后重复。 当剩下的对象少于 B 时,停下来保留剩下的 你重复操作的次数,让我们 调用那个数字 C,是商。你保持在 结束,我们称之为 D,是余数。

如果你有2个物体和4个人,你已经少于4个了 所以每个人得到0个对象,你得到2个。

这就是为什么2模4等于2。

模运算符的计算结果是两个整数操作数除法的余数:

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)

我认为你对模方程的解法感到困惑。

当我们写一个像 2/4这样的除法方程时,我们是用2除以4。

当写一个模方程,如 2 % 4,我们除以 2 by 4(认为2除以4)并返回余数。

国防部是余数算子。这就是为什么2mod 4给出2作为余数。4 * 0 = 0然后2-0 = 2。为了让它更清楚,尝试做同样的6模4或8模3。

如果你用香蕉和一群人就容易多了。

假设你有一个香蕉和一组6个人,你会表达: 1 mod 6/1 % 6/1 modulo 6

你需要每个人6根香蕉才能吃饱并且快乐。

所以如果你有一个香蕉并且需要和6个人分享,但是你只能分享如果你有一个香蕉给每个团队成员,也就是6个人,那么你将会有一个香蕉(剩下的,不分享给团队中的任何人) ,同样的道理也适用于2个香蕉。然后你将有2个香蕉作为剩余(没有共享)。

但是当你得到6个香蕉的时候,你应该感到高兴,因为在6个人的小组中,每个成员有1个香蕉,剩下的就是0或者没有香蕉了,当你把6个香蕉分给6个人的时候。

现在,对于7个香蕉和6个人在一组,你会得到 7 mod 6 = 1,这是因为你给了6个人每人1个香蕉,1个香蕉是其余的。

对于6个人分享的 12 mod 6或12个香蕉,每个人将有两个香蕉,其余为0。

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

  • 4进20次。
  • 4乘以0等于0。
  • 你把那个零放在2下面,然后减去剩下的2。

电脑只能解决这个问题。计算机停在那里并返回2,这是有意义的,因为这就是“%”(mod)所要求的。

我们接受的训练是输入小数,然后继续前进,这就是为什么一开始这可能是违反直觉的。

这是欧几里得算法。

例如:

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

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

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

所以你的答案是

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

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

假设你有一个像素在屏幕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 mod 4

我们可以使用这个小公式,我想了一会儿,也许它已经定义了某个我不知道但对我有用的地方,它真的很有用。

其中 C 是答案

其中 K 等于 B 乘以 A 的次数

2 mod 4是:

0 * 4 - 2 = |C|

C = |-2| => 2

希望对你有用:)

带提醒的 Mod 操作。

这叫同余关系。

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

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

多少次 yx中没有余数? 对于2% 4是0。

B-你需要加多少才能从那个返回到 x?要从0返回到2,你需要2-0,也就是2。

这些问题可以归结为一个问题: 要把 x除以 y得到的整数结果再加多少,才能得到 x

整数意味着只有整数,而不是分数,无论什么都是有趣的。

小数除法余数(例如283849)对模不感兴趣,因为模只处理整数。

这可能是提到 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")

我的方法是,2% 4可以解释为4的最高因子小于或等于2,即0,因此2(2% 4的左操作数)减去(-)0是2