我不好意思问这么简单的问题。我的学期还有两个星期才开始,所以我不能问教授,悬念会杀了我。
为什么 2 mod 4 = 2?
Mod只是意味着您在执行除法后取余数。由于 4 进入 2 零次,因此您最终得到 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, %) 是余数运算符。
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)
如果你使用香蕉和一群人会容易得多。
假设您有 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 6
6 人分享 12 根香蕉,每人有 2 根香蕉,其余为 0。
2 / 4 = 0,余数为 2
就在几分钟前,我也对此感到困惑。然后我在一张纸上进行了长手除法,这是有道理的:
这就是计算机要解决这个问题的程度。计算机停在那里并返回 2,这是有道理的,因为这就是 "%" (mod) 所要求的。
我们已经接受过输入小数并继续前进的培训,这就是为什么一开始这可能违反直觉。
有人联系我,让我在问题的评论中更详细地解释我的答案。所以这是我回复那个人的内容,以防它可以帮助其他人:
模运算为您提供欧几里得除法的其余部分(仅适用于整数,不适用于实数)。如果您有 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。
模运算符计算两个整数操作数相除的余数。这里有一些例子:
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)
mod 表示除以时的提醒。所以 2 除以 4 是 0,剩下 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 除以 4 时,您得到 0,剩下或剩余 2。模就是除数后的余数。
我认为您对如何读取模方程感到困惑。
当我们写一个除法方程时,例如2/4
我们将 2 除以 4。
当编写模方程时,例如2 % 4
我们正在除2 by 4
(认为 2 比 4)并返回余数。
MOD 是余数运算符。这就是为什么 2 mod 4 给出 2 作为余数。4*0=0,然后 2-0=2。为了更清楚,尝试对 6 mod 4 或 8 mod 3 做同样的事情。
这就是欧几里得算法。
例如
a mod b = k * b + c => a mod b = c,其中 k 是整数,c 是答案
4 模 2 = 2 * 2 + 0 => 4 模 2 = 0
27 模 5 = 5 * 5 + 2 => 27 模 5 = 2
所以你的答案是
2 模 4 = 0 * 4 + 2 => 2 模 4 = 2
为了:
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
希望对你有帮助 :)
这称为模运算。
a==b(mod m)
then m|(a-b)
a-b=km
a=b+km
So, 2=2+0*4
要回答模数x % y
,您需要问两个问题:
A- 有多少次y
没有x
余数?对于 2%4,这是 0。
B-你需要加多少才能从那个回来x
?要从 0 回到 2,您需要 2-0,即 2。
这些可以总结为一个问题,如下所示:您需要在除以的整数结果中添加多少x
才能y
返回x
?
整数是指只有整数,而不是任何感兴趣的分数。
小数除法余数(例如 .283849)对模数不感兴趣,因为模数只处理整数。
为了直观地考虑它,请想象一个钟面,在您的特定示例中,它仅变为 4 而不是 12。如果您从时钟上的 4 开始(就像从零开始)并顺时针旋转它2 个“小时”,你降落在 2 上,就像顺时针绕它转 6 个“小时”一样,你也会降落在 2 上(6 mod 4 == 2 就像 2 mod 4 == 2)。
这可能是提及 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 可以解释为小于或等于 2 的 4 的最大因数,即 0,因此 2(来自 2%4 的左操作数)减去(-) 0 是 2