# Smallest of three integers without comparison operators

• Difficulty Level : Medium
• Last Updated : 08 Mar, 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



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

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
Recommended Articles
Page :