模运算符

Modulo operator

9%4 = 1

1%4 答案是 1

2%4 答案是 2

已找到答案。 - 关闭。

Mod的意思是除法取余

1 在 4 中出现零次,所以余数为 1。

Here解释得更详细一点的维基百科定义:

In mathematics the result of the modulo operation is the remainder of an arithmetic division. As is well known, an arithmetic division of two integers produces a quotient and a remainder.

模运算符给出除法的余数。除了 1,除 1 的余数为 1

  ______
4 | 1  ( 0
    0
  ------
    1

4 在 1 中出现 0 次。所以在除法中输入 0,余数为 1。

第一次看到这个回答: 然后

http://mathforum.org/library/drmath/view/54363.html

The "mod" operator in computer languages is simply the remainder. For example,

17 mod 3 = 2

because

17 / 3 = 5 rem 2

which in turn means

17 = 3 * 5 + 2

There are some tricky issues when negative numbers are used, but that shouldn't ordinarily be necessary.

In math (number theory), the term is used a little differently. The "modulus" is actually not the remainder, but the number you are dividing by; and "mod" is not an operator, but a label telling "in what sense two quantities are considered congruent, or equal." For example, we would say

17 = 11 (mod 3)

(read as "17 is congruent to 11, modulo 3"), meaning that 17 and 11 both leave the SAME remainder when divided by 3. You probably won't see this usage if you are only reading about programming, but it's worth being aware of if you look deeper into the math behind it.

以下是档案中的三个参考资料:

Modulus 运算符问题 http://mathforum.org/library/drmath/view/55771.html

Mod http://mathforum.org/library/drmath/view/55910.html

Mod函数和负数 http://mathforum.org/library/drmath/view/52343.html

更深入: http://mathworld.wolfram.com/Congruence.html

If two numbers b and c have the property that their difference b-c is integrally divisible by a number m (i.e., (b-c)/m is an integer), then b and c are said to be "congruent modulo m." The number m is called the modulus, and the statement "b is congruent to c (modulo m)" is written mathematically as

b=c (mod m). (1) If b-c is not integrally divisible by m, then it is said that "b is not congruent to c (modulo m)," which is written

b≢c (mod m). (2) The explicit "(mod m)" is sometimes omitted when the modulus m is understood by context, so in such cases, care must be taken not to confuse the symbol = with the equivalence sign.

The quantity b is sometimes called the "base," and the quantity c is called the residue or remainder. There are several types of residues. The common residue defined to be nonnegative and smaller than m, while the minimal residue is c or c-m, whichever is smaller in absolute value.

CongruenceClockMinutes Congruence arithmetic is perhaps most familiar as a generalization of the arithmetic of the clock. Since there are 60 minutes in an hour, "minute arithmetic" uses a modulus of m=60. If one starts at 40 minutes past the hour and then waits another 35 minutes, 40+35=15 (mod 60), so the current time would be 15 minutes past the (next) hour.

CongruenceClockHours Similarly, "hour arithmetic" on a 12-hour clock uses a modulus of m=12, so 10 o'clock (a.m.) plus five hours gives 10+5=3 (mod 12), or 3 o'clock (p.m.)

Congruences satisfy a number of important properties, and are extremely useful in many areas of number theory. Using congruences, simple divisibility tests to check whether a given number is divisible by another number can sometimes be derived. For example, if the sum of a number's digits is divisible by 3 (9), then the original number is divisible by 3 (9).

Congruences also have their limitations. For example, if a=b and c=d (mod n), then it follows that a^x=b^x, but usually not that x^c=x^d or a^c=b^d. In addition, by "rolling over," congruences discard absolute information. For example, knowing the number of minutes past the hour is useful, but knowing the hour the minutes are past is often more useful still.

Let a=a^' (mod m) and b=b^' (mod m), then important properties of congruences include the following, where => means "implies":

  1. Equivalence: a=b (mod 0)=>a=b (which can be regarded as a definition).

  2. Determination: either a=b (mod m) or a≢b (mod m).

  3. Reflexivity: a=a (mod m).

  4. Symmetry: a=b (mod m)=>b=a (mod m).

  5. Transitivity: a=b (mod m) and b=c (mod m)=>a=c (mod m).

  6. a+b=a^'+b^' (mod m).

  7. a-b=a^'-b^' (mod m).

  8. ab=a^'b^' (mod m).

  9. a=b (mod m)=>ka=kb (mod m).

  10. a=b (mod m)=>a^n=b^n (mod m).

  11. a=b (mod m_1) and a=b (mod m_2)=>a=b (mod [m_1,m_2]), where [m_1,m_2] is the least common multiple.

  12. ak=bk (mod m)=>a=b (mod m/((k,m))), where (k,m) is the greatest common divisor.

  13. If a=b (mod m), then P(a)=P(b) (mod m), for P(x) a polynomial.

Properties (6-8) can be proved simply by defining

a = a^'+rm (3) b = b^'+sm, (4) where r and s are integers. Then

a+b = a^'+b^'+(r+s)m (5) a-b = a^'-b^'+(r-s)m (6) ab = a^'b^'+(a^'s+b^'r+rsm)m, (7) so the properties are true.

Congruences also apply to fractions. For example, note that

2×4=1 3×3=2 6×6=1 (mod 7), (8) so

1/2=4 1/4=2 2/3=3 1/6=6 (mod 7). (9) To find p/q (mod m) where (q,m)=1 (i.e., q and m are relatively prime), use an algorithm similar to the greedy algorithm. Let q_0=q and find

p_0=[m/(q_0)], (10) where [x] is the ceiling function, then compute

q_1=q_0p_0 (mod m). (11) Iterate until q_n=1, then

p/q=pproduct_(i=0)^(n-1)p_i (mod m). (12) This method always works for m prime, and sometimes even for m composite. However, for a composite m, the method can fail by reaching 0 (Conway and Guy 1996).

Finding a fractional congruence is equivalent to solving a corresponding linear congruence equation

ax=b (mod m). (13) A fractional congruence of a unit fraction is known as a modular inverse. A fractional congruence can be found in the Wolfram Language using the following function:

FractionalMod[r_Rational, m_Integer] := Mod[ Numerator[r]PowerMod[Denominator[r], -1, m], m] or using the undocumented syntax PolynomialMod[r, m] for r an explicit rational number.

模运算符为您提供 整数 除法的余数。 1/4 的整数结果是 0,不是 0.25。
所以 1%4 = 1 - (1/4)*4 = 1 - 0*4 = 1 - 0 = 1(通常 n%m = n - (n/m)*m