75

I'm messing with the modulo operation in python and I understand that it will spit back what the remainder is.

But what if the first number is smaller than the second?

for instance

2 % 5 the answer is 2.

How does that work?

2/5 = .4

Albz
  • 1,982
  • 2
  • 21
  • 33
Pete
  • 5,791
  • 3
  • 19
  • 10

19 Answers19

59

Does this help

22  % 5 = 2 
17  % 5 = 2 
12  % 5 = 2 
7   % 5 = 2 
2   % 5 = 2

Maybe this

22 / 5 = 4 + 2/5
17 / 5 = 3 + 2/5
12 / 5 = 2 + 2/5
7  / 5 = 1 + 2/5
2  / 5 = 0 + 2/5
jrhicks
  • 14,759
  • 9
  • 42
  • 57
50

5 goes into 2 zero times.

5*0 = 0

2-0 = 2.

The answer is 2.

aheze
  • 24,434
  • 8
  • 68
  • 125
MedicineMan
  • 15,008
  • 32
  • 101
  • 146
28

2 divided by 5 (integer division) is 0 with a remainder of 2.

qpingu
  • 950
  • 7
  • 11
17

It's really supper easy to figure out the results of modulo when the first number is smaller. The result is always equal the the first (smaller) number

3 % 5 = 3
5 % 10 = 5
78 % 112 = 78

Try it out for yourself.

Doug Steinberg
  • 1,122
  • 14
  • 32
15

2 = 0 x 5 + 2

Pascal Thivent
  • 562,542
  • 136
  • 1,062
  • 1,124
13

If the first number is smaller, then the answer is that first number again.

Because the second number is larger, it 'goes into' the first number zero times and the remainder is the entirety of this first number.

edit: revisiting this thread, I had to remember what this operator was for. I referred to this other thread here:

Recognizing when to use the modulus operator

Darryl Calder
  • 133
  • 1
  • 9
10

for instance 2 % 5 the answer is 2. How does that work? 2/5 = .4!

Modulo inherently produces an integer result, whereas division can be an integer or floating point operation. Your observation that 2/5 equals 0.4 indicates you're thinking in terms of floating point. In that case, the .4 itself is the remainder, expressed differently. The integral portion of "0.4" is the "0" and the remainder portion is ".4". The remainder of an integer division operation is exactly the same thing as the fractional (or "decimal", in colloquial terms) portion of a floating point operation, just expressed differently.

The fractional part of your example, 0.4, can be expressed as 0.4 or as 2/5 (two fifths); either way it's the same thing. Note that when it's written as 2/5, the denominator (divisor) of the fractional part is the same as the denominator (divisor) of the original problem, while the numerator (dividend) of the fractional part is what is referred to as the "remainder" in integer division. Any way you look at it, the fractional part of the quotient and the remainder represent the same thing (the portion of the dividend that cannot be evenly divided by the divisor), just expressed differently.

phonetagger
  • 7,701
  • 3
  • 31
  • 55
  • 1
    No, the .4 is the *quotient,* and there is *no* remainder, in real division. The rest of this doesn't make sense either, as it implies that the correct modulus value is 0.4 rounded or truncated to zero. – user207421 Jun 15 '13 at 01:06
  • @EJP - I'm sorry my answer didn't make sense to you. In "real" division, the dividend divided by the divisor results in the quotient. The quotient can be expressed in different ways: It can be expressed as single quantity (in various forms) or as an integer representing the integral number of times the dividend can be evenly divided by the divisor, and if there is any amount "left over" that can't be evenly divided by the divisor, that's the "remainder". The remainder is exactly that portion of the quotient that would fall to the right of the "decimal point", only expressed differently. – phonetagger Jun 17 '13 at 00:40
  • 2
    User in the first comment is wrong to contest this just because they didn't understand. This makes perfect sense and is a great explanation of the math behind the operator. Thinking about a 'remainder' as a different way to express a fractional component of the result of division was helpful to me! – smohyee Oct 18 '18 at 21:23
6

You can think of it as 2 / 5 = 0 with a remainder of 2 of 5.

akf
  • 38,619
  • 8
  • 86
  • 96
2

a % b = a if a << b

2

The numerator in the remainder is your modulo answer, no matter what, whether the numerator is bigger or smaller than the denominator.

12 % 5 = 2 , because 12 / 5 = 2 and **2**/5

9 % 2 = 1 , because 9 / 2 = 4 and **1**/2

This may make more sense.

5 % 89 = 5 , because 5 / 89 = 0 and **5**/89

5 % 365 = 5 , because 5 / 365 = 0 and **5**/365

5 % 6 = 5 , because 5 / 6 = 0 and **5**/6
Emerson
  • 29
  • 4
2
a%b = a/b=c,
      c*b=d,
      a-d=modulo;

This is it what python does while mod two numbers or so i think. The modulo between a smaller number and a bigger number will always be the smaller number.

Josh
  • 21
  • 2
  • Is this a new answer? What is the new information comparing to the others? – jogo Feb 21 '16 at 11:26
  • Comment without read the commentaries. Then read them but couldn't erase my commentary. I apologize i suppose. – Josh Feb 21 '16 at 23:50
2

Another thing to note was that if the first number (a) is a negative number, the answer is always the difference of the second number to the first number (n-a).

Example: a % n

  1. -5 % 7 = 2 ---> 7 - 5 = 2
  2. 4 % -9 = -5 ---> 9 - 4 = -5 (follow the sign of the larger number)

If both numbers were negative, the answer will always be a negative number which is equal to the smaller number.

  1. -5 % -7 = -5
  2. -4 % -9 = -4
aldennis
  • 51
  • 3
2

Just as a follow up for us non-math-brain people out there, I think part of the problem in understanding this is that the concept is often simplified as "what's left over when you divide x by y", which, when x is smaller, is nothing, aka 0. I more fail proof way might be to say

  1. How many times does y fully go into x?
  2. Take that number, and multiply it by y to get as close to x as possible
  3. Now subtract what you get from step 2 from x, that's your modulo.

So in 2 (as x) % 5 (as y):

  1. 5 goes into 2 fully no times at all, so, 0
  2. 0 (the outcome of the step above) multiplied by 5(aka y) is 0
  3. 2(aka x) - 0 (the product from the step above) is 2
GSchriver
  • 93
  • 1
  • 6
1

MOD doesnt work with decimal... MOD(A,B) u want result where A

abhishek
  • 11
  • 1
  • 1
    Could you either extend on this a little or add it as a comment instead? It might be hard for some people to follow your thinking here. Thank you! – Fabian Schultz Jan 11 '17 at 11:25
1

There's no number that would multiply 5 to get you closer to 2.

In other words x has to be 0 to satisfy the equation: 5*x + r = 2.

dud3
  • 409
  • 1
  • 6
  • 16
1

To understand modular arithmetic, I suggest you go over to Khan Academy and read their post about it. They also have interactive practice questions on the same page. Here's the link: https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

In short:

Use the following equation:

A = BQ + R

A is the dividend

B is the divisor

Q is the quotient

R is the remainder, and is the result for a modulo.

Q = (A/B)

Keep in mind that Q always goes to the closest smallest integer. So if Q = 0.2, then Q = 0.0. If Q = -1.2, then Q = -2.0.

If Q doesn't have decimals then your final answer is 0 (R = 0).


For your question:

Q = (2/5) = 0.4, so Q = 0.

Plug that into 'A = BQ + R':

2 = 5*0 + R

So, R = 2.


Hope this helps. As I said you can read more about on Khan Academy. Here's the link: https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

H. Almidan
  • 431
  • 4
  • 9
1

In case i.e. 2%5 = 2: In real math remainder is 0 and quotient is 0.4 but in programming, it see 2 is less than 5 means 5*1=5, so it go low and just divide it by 0 so it become less which is 0. Hence remainder become 2 because 2-0=2 ;)

Farrukh Ahmed
  • 115
  • 1
  • 1
0

Example: a % n

  1. -5 % 7 = 2 ---> 7 - 5 = 2
  2. 4 % -9 = -5 ---> 9 - 4 = -5 (follow the sign of the larger number)

[^ Actually for this part depend on the programming language itself, no.1 it can be either 2 or -5 bypass the negative sign, or no.2 can be either -5 or 4]

@aldennis

Difagama
  • 41
  • 2
-1

Modulo works by giving the remainder after division, one thing it's useful for is
-Finding if a number is even or not
Code sample:

// 4 % 2 means "2 divided by 2 is what, and what is the remainder? if I have a remainder, return it or else return 0"
if(4 % 2 == 0) {
  alert("2 is even");
} else {
  alert("2 is odd");
}

So if 4 % 2 has a remainder of 0, it's even or else it's odd.

Helios
  • 34
  • 1