How can I calculate divide and modulo for integers in C#?

C#MathOperatorsDivisionModulo

C# Problem Overview


How can I calculate division and modulo for integer numbers in C#?

C# Solutions


Solution 1 - C#

Here's an answer from the MSDN documentation.

> When you divide two integers, the result is always an integer. For example, the result of 7 / 3 is 2. To determine the remainder of 7 / 3, use the remainder operator (%).

int a = 5;
int b = 3;

int div = a / b; //quotient is 1
int mod = a % b; //remainder is 2

Solution 2 - C#

There is also Math.DivRem

quotient = Math.DivRem(dividend, divisor, out remainder);

Solution 3 - C#

Fun fact!

The 'modulus' operation is defined as:

a % n ==> a - (a/n) * n

Ref:Modular Arithmetic

So you could roll your own, although it will be FAR slower than the built in % operator:

public static int Mod(int a, int n)
{
	return a - (int)((double)a / n) * n;
}

Edit: wow, misspoke rather badly here originally, thanks @joren for catching me

Now here I'm relying on the fact that division + cast-to-int in C# is equivalent to Math.Floor (i.e., it drops the fraction), but a "true" implementation would instead be something like:

public static int Mod(int a, int n)
{
	return a - (int)Math.Floor((double)a / n) * n;
}

In fact, you can see the differences between % and "true modulus" with the following:

var modTest =
	from a in Enumerable.Range(-3, 6)
	from b in Enumerable.Range(-3, 6)
	where b != 0
	let op = (a % b)
	let mod = Mod(a,b)
	let areSame = op == mod
	select new 
	{ 
		A = a,
		B = b,
		Operator = op, 
		Mod = mod, 
		Same = areSame
	};
Console.WriteLine("A      B     A%B   Mod(A,B)   Equal?");
Console.WriteLine("-----------------------------------");
foreach (var result in modTest)
{
	Console.WriteLine(
		"{0,-3} | {1,-3} | {2,-5} | {3,-10} | {4,-6}", 
		result.A,
		result.B,
		result.Operator, 
		result.Mod, 
		result.Same);
}

Results:

A      B     A%B   Mod(A,B)   Equal?
-----------------------------------
-3  | -3  | 0     | 0          | True  
-3  | -2  | -1    | -1         | True  
-3  | -1  | 0     | 0          | True  
-3  | 1   | 0     | 0          | True  
-3  | 2   | -1    | 1          | False 
-2  | -3  | -2    | -2         | True  
-2  | -2  | 0     | 0          | True  
-2  | -1  | 0     | 0          | True  
-2  | 1   | 0     | 0          | True  
-2  | 2   | 0     | 0          | True  
-1  | -3  | -1    | -1         | True  
-1  | -2  | -1    | -1         | True  
-1  | -1  | 0     | 0          | True  
-1  | 1   | 0     | 0          | True  
-1  | 2   | -1    | 1          | False 
0   | -3  | 0     | 0          | True  
0   | -2  | 0     | 0          | True  
0   | -1  | 0     | 0          | True  
0   | 1   | 0     | 0          | True  
0   | 2   | 0     | 0          | True  
1   | -3  | 1     | -2         | False 
1   | -2  | 1     | -1         | False 
1   | -1  | 0     | 0          | True  
1   | 1   | 0     | 0          | True  
1   | 2   | 1     | 1          | True  
2   | -3  | 2     | -1         | False 
2   | -2  | 0     | 0          | True  
2   | -1  | 0     | 0          | True  
2   | 1   | 0     | 0          | True  
2   | 2   | 0     | 0          | True  

Solution 4 - C#

Division is performed using the / operator:

result = a / b;

Modulo division is done using the % operator:

result = a % b;

Solution 5 - C#

Read two integers from the user. Then compute/display the remainder and quotient,

// When the larger integer is divided by the smaller integer
Console.WriteLine("Enter integer 1 please :");
double a5 = double.Parse(Console.ReadLine());
Console.WriteLine("Enter integer 2 please :");
double b5 = double.Parse(Console.ReadLine());

double div = a5 / b5;
Console.WriteLine(div);

double mod = a5 % b5;
Console.WriteLine(mod);

Console.ReadLine();

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkartalView Question on Stackoverflow
Solution 1 - C#as-ciiView Answer on Stackoverflow
Solution 2 - C#danodonovanView Answer on Stackoverflow
Solution 3 - C#JerKimballView Answer on Stackoverflow
Solution 4 - C#Rion WilliamsView Answer on Stackoverflow
Solution 5 - C#James DombroskiView Answer on Stackoverflow