# Smallest of three integers without comparison operators

Write a program to find the smallest of three integers, without using any of the comparison operators.

Let 3 input numbers be x, y and z.

Method 1 (Repeated Subtraction)
Take a counter variable c and initialize it with 0. In a loop, repeatedly subtract x, y and z by 1 and increment c. The number which becomes 0 first is the smallest. After the loop terminates, c will hold the minimum of 3.

## C++

 `// C++ program to find Smallest ` `// of three integers without ` `// comparison operators ` `#include ` `using` `namespace` `std; ` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `{ ` `    ``int` `c = 0; ` `    ``while` `(x && y && z) { ` `        ``x--; ` `        ``y--; ` `        ``z--; ` `        ``c++; ` `    ``} ` `    ``return` `c; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `x = 12, y = 15, z = 5; ` `    ``cout << ``"Minimum of 3 numbers is "` `         ``<< smallest(x, y, z); ` `    ``return` `0; ` `} ` ` `  `// This code is contributed ` `// by Akanksha Rai `

## C

 `// C program to find Smallest ` `// of three integers without ` `// comparison operators ` `#include ` ` `  `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `{ ` `    ``int` `c = 0; ` `    ``while` `(x && y && z) { ` `        ``x--; ` `        ``y--; ` `        ``z--; ` `        ``c++; ` `    ``} ` `    ``return` `c; ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `x = 12, y = 15, z = 5; ` `    ``printf``(``"Minimum of 3 numbers is %d"``, smallest(x, y, z)); ` `    ``return` `0; ` `} `

## Java

 `// Java program to find Smallest ` `// of three integers without ` `// comparison operators ` `class` `GFG { ` ` `  `    ``static` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `    ``{ ` `        ``int` `c = ``0``; ` ` `  `        ``while` `(x != ``0` `&& y != ``0` `&& z != ``0``) { ` `            ``x--; ` `            ``y--; ` `            ``z--; ` `            ``c++; ` `        ``} ` ` `  `        ``return` `c; ` `    ``} ` ` `  `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `x = ``12``, y = ``15``, z = ``5``; ` ` `  `        ``System.out.printf(``"Minimum of 3"` `                              ``+ ``" numbers is %d"``, ` `                          ``smallest(x, y, z)); ` `    ``} ` `} ` ` `  `// This code is contributed by  Smitha Dinesh Semwal. `

## Python3

 `# Python3 program to find Smallest ` `# of three integers without  ` `# comparison operators ` ` `  `def` `smallest(x, y, z): ` `    ``c ``=` `0` `     `  `    ``while` `( x ``and` `y ``and` `z ): ` `        ``x ``=` `x``-``1` `        ``y ``=` `y``-``1` `        ``z ``=` `z``-``1` `        ``c ``=` `c ``+` `1` ` `  `    ``return` `c ` ` `  `# Driver Code ` `x ``=` `12` `y ``=` `15` `z ``=` `5` `print``(``"Minimum of 3 numbers is"``, ` `       ``smallest(x, y, z)) ` ` `  `# This code is contributed by Anshika Goyal `

## C#

 `// C# program to find Smallest of three ` `// integers without comparison operators ` `using` `System; ` ` `  `class` `GFG { ` `    ``static` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `    ``{ ` `        ``int` `c = 0; ` ` `  `        ``while` `(x != 0 && y != 0 && z != 0) { ` `            ``x--; ` `            ``y--; ` `            ``z--; ` `            ``c++; ` `        ``} ` ` `  `        ``return` `c; ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `x = 12, y = 15, z = 5; ` ` `  `        ``Console.Write(``"Minimum of 3"` `                      ``+ ``" numbers is "` `+ smallest(x, y, z)); ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007 `

## PHP

 ` `

Output:

```Minimum of 3 numbers is 5
```

This method doesn’t work for negative numbers. Method 2 works for negative numbers also.

Method 2 (Use Bit Operations)
Use method 2 of this post to find minimum of two numbers (We can’t use Method 1 as Method 1 uses comparison operator). Once we have functionality to find minimum of 2 numbers, we can use this to find minimum of 3 numbers.

## C++

 `// C++ implementation of above approach ` `#include ` `using` `namespace` `std; ` `#define CHAR_BIT 8 ` ` `  `/*Function to find minimum of x and y*/` `int` `min(``int` `x, ``int` `y) ` `{ ` `    ``return` `y + ((x - y) & ((x - y) >> (``sizeof``(``int``) * CHAR_BIT - 1))); ` `} ` ` `  `/* Function to find minimum of 3 numbers x, y and z*/` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `{ ` `    ``return` `min(x, min(y, z)); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `x = 12, y = 15, z = 5; ` `    ``cout << ``"Minimum of 3 numbers is "`  `<< smallest(x, y, z); ` `    ``return` `0; ` `} ` ` `  `// This code is contributed by Code_Mech. `

## C

 `// C implementation of above approach ` `#include ` `#define CHAR_BIT 8 ` ` `  `/*Function to find minimum of x and y*/` `int` `min(``int` `x, ``int` `y) ` `{ ` `    ``return` `y + ((x - y) & ((x - y) >> (``sizeof``(``int``) * CHAR_BIT - 1))); ` `} ` ` `  `/* Function to find minimum of 3 numbers x, y and z*/` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `{ ` `    ``return` `min(x, min(y, z)); ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `x = 12, y = 15, z = 5; ` `    ``printf``(``"Minimum of 3 numbers is %d"``, smallest(x, y, z)); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation of above approach ` `class` `GFG ` `{ ` `     `  `static` `int` `CHAR_BIT = ``8``; ` ` `  `// Function to find minimum of x and y ` `static` `int` `min(``int` `x, ``int` `y) ` `{ ` `    ``return` `y + ((x - y) & ((x - y) >>  ` `               ``((Integer.SIZE/``8``) * CHAR_BIT - ``1``))); ` `} ` ` `  `// Function to find minimum of 3 numbers x, y and z ` `static` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `{ ` `    ``return` `Math.min(x, Math.min(y, z)); ` `} ` ` `  `// Driver code ` `public` `static` `void` `main (String[] args)  ` `{ ` `    ``int` `x = ``12``, y = ``15``, z = ``5``; ` `    ``System.out.println(``"Minimum of 3 numbers is "` `+  ` `                                ``smallest(x, y, z)); ` `} ` `} ` ` `  `// This code is contributed by mits `

## Python3

 `# Python3 implementation of above approach ` `CHAR_BIT ``=` `8` ` `  `# Function to find minimum of x and y ` `def` `min``(x, y): ` `    ``return` `y ``+` `((x ``-` `y) & \ ` `               ``((x ``-` `y) >> (``32` `*` `CHAR_BIT ``-` `1``))) ` ` `  `# Function to find minimum  ` `# of 3 numbers x, y and z ` `def` `smallest(x, y, z): ` `    ``return` `min``(x, ``min``(y, z)) ` ` `  `# Driver code ` `x ``=` `12` `y ``=` `15` `z ``=` `5` `print``(``"Minimum of 3 numbers is "``,  ` `               ``smallest(x, y, z)) ` ` `  `# This code is contributed ` `# by Mohit Kumar `

## C#

 `// C# implementation of above approach ` `using` `System; ` ` `  `class` `GFG ` `{ ` `     `  `static` `int` `CHAR_BIT=8; ` ` `  `/*Function to find minimum of x and y*/` `static` `int` `min(``int` `x, ``int` `y) ` `{ ` `    ``return` `y + ((x - y) & ((x - y) >> (``sizeof``(``int``) * CHAR_BIT - 1))); ` `} ` ` `  `/* Function to find minimum of 3 numbers x, y and z*/` `static` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `{ ` `    ``return` `Math.Min(x, Math.Min(y, z)); ` `} ` ` `  `// Driver code ` `static` `void` `Main() ` `{ ` `    ``int` `x = 12, y = 15, z = 5; ` `    ``Console.WriteLine(``"Minimum of 3 numbers is "``+smallest(x, y, z)); ` `} ` `} ` ` `  `// This code is contributed by mits `

Output:

```Minimum of 3 numbers is 5
```

Method 3 (Use Division operator)
We can also use division operator to find minimum of two numbers. If value of (a/b) is zero, then b is greater than a, else a is greater. Thanks to gopinath and Vignesh for suggesting this method.

## C++

 `#include ` ` `  `// Using division operator to find ` `// minimum of three numbers ` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `{ ` `    ``if` `(!(y / x)) ``// Same as "if (y < x)" ` `        ``return` `(!(y / z)) ? y : z; ` `    ``return` `(!(x / z)) ? x : z; ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `x = 78, y = 88, z = 68; ` `    ``printf``(``"Minimum of 3 numbers is %d"``, smallest(x, y, z)); ` `    ``return` `0; ` `} `

## Java

 `// Java program of above approach ` `class` `GfG { ` ` `  `    ``// Using division operator to ` `    ``// find minimum of three numbers ` `    ``static` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `    ``{ ` `        ``if` `((y / x) != ``1``) ``// Same as "if (y < x)" ` `            ``return` `((y / z) != ``1``) ? y : z; ` `        ``return` `((x / z) != ``1``) ? x : z; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `x = ``78``, y = ``88``, z = ``68``; ` `        ``System.out.printf(``"Minimum of 3 numbers"` `                              ``+ ``" is %d"``, ` `                          ``smallest(x, y, z)); ` `    ``} ` `} ` ` `  `// This code has been contributed by 29AjayKumar `

## python3

 `# Using division operator to find ` `# minimum of three numbers ` `def` `smallest(x, y, z): ` ` `  `    ``if` `(``not` `(y ``/` `x)): ``# Same as "if (y < x)" ` `        ``return` `y ``if` `(``not` `(y ``/` `z)) ``else` `z ` `    ``return` `x ``if` `(``not` `(x ``/` `z)) ``else` `z ` ` `  `# Driver Code ` `if` `__name__``=``=` `"__main__"``: ` ` `  `    ``x ``=` `78` `    ``y ``=` `88` `    ``z ``=` `68` `    ``print``(``"Minimum of 3 numbers is"``, ` `                  ``smallest(x, y, z)) ` ` `  `# This code is contributed  ` `# by ChitraNayal `

## C#

 `// C# program of above approach ` `using` `System; ` `public` `class` `GfG { ` ` `  `    ``// Using division operator to ` `    ``// find minimum of three numbers ` `    ``static` `int` `smallest(``int` `x, ``int` `y, ``int` `z) ` `    ``{ ` `        ``if` `((y / x) != 1) ``// Same as "if (y < x)" ` `            ``return` `((y / z) != 1) ? y : z; ` `        ``return` `((x / z) != 1) ? x : z; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `x = 78, y = 88, z = 68; ` `        ``Console.Write(``"Minimum of 3 numbers"` `                          ``+ ``" is {0}"``, ` `                      ``smallest(x, y, z)); ` `    ``} ` `} ` `/* This code contributed by PrinciRaj1992 */`

Output:

`Minimum of 3 numbers is 68`

Please write comments if you find the above codes/algorithms incorrect, or find other ways to solve the same problem.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.