# Smallest of three integers without comparison operators

• Difficulty Level : Medium
• Last Updated : 12 Jun, 2022

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

 ``

## Javascript

 ``

Output:

`Minimum of 3 numbers is 5`

Time Complexity: O(min(x, y, z))

Auxiliary Space: O(1)

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`

## Javascript

 ``

Output:

`Minimum of 3 numbers is 5`

Time Complexity: O(1)

Auxiliary Space: O(1)

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++

 `// C++ implementation of above approach``#include ``using` `namespace` `std;` `// 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;``    ``cout << ``"Minimum of 3 numbers is "` `<< smallest(x, y, z);``    ``return` `0;``}``// this code is contributed by shivanisinghss2110`

## 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 */`

## Javascript

 ``

Output:

`Minimum of 3 numbers is 68`

Time Complexity: O(1)

Auxiliary Space: O(1)

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