# Minimum product pair an array of positive Integers

• Difficulty Level : Easy
• Last Updated : 02 Mar, 2021

Given an array of positive integers. We are required to write a program to print the minimum product of any two numbers of the given array.
Examples:

```Input : 11 8 5 7 5 100
Output : 25
Explanation : The minimum product of any
two numbers will be 5 * 5 = 25.

Input : 198 76 544 123 154 675
Output : 7448
Explanation : The minimum product of any
two numbers will be 76 * 123 = 7448.```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Simple Approach : A simple approach will be to run two nested loops to generate all possible pair of elements and keep track of the minimum product.
Time Complexity: O( n * n)
Auxiliary Space: O( 1 )
Better Approach: An efficient approach will be to first sort the given array and print the product of first two numbers, sorting will take O(n log n). Answer will be then a * a
Time Complexity: O( n * log(n))
Auxiliary Space: O( 1 )
Best Approach: The idea is linearly traverse given array and keep track of minimum two elements. Finally return product of two minimum elements.
Below is the implementation of above approach.

## C++

 `// C++ program to calculate minimum``// product of a pair``#include ``using` `namespace` `std;` `// Function to calculate minimum product``// of pair``int` `printMinimumProduct(``int` `arr[], ``int` `n)``{``    ``// Initialize first and second``    ``// minimums. It is assumed that the``    ``// array has at least two elements.``    ``int` `first_min = min(arr, arr);``    ``int` `second_min = max(arr, arr);` `    ``// Traverse remaining array and keep``    ``// track of two minimum elements (Note``    ``// that the two minimum elements may``    ``// be same if minimum element appears``    ``// more than once)``    ``// more than once)``    ``for` `(``int` `i=2; i

## Java

 `// Java program to calculate minimum``// product of a pair``import` `java.util.*;` `class` `GFG {``    ` `    ``// Function to calculate minimum product``    ``// of pair``    ``static` `int` `printMinimumProduct(``int` `arr[], ``int` `n)``    ``{``        ``// Initialize first and second``        ``// minimums. It is assumed that the``        ``// array has at least two elements.``        ``int` `first_min = Math.min(arr[``0``], arr[``1``]);``        ``int` `second_min = Math.max(arr[``0``], arr[``1``]);``     ` `        ``// Traverse remaining array and keep``        ``// track of two minimum elements (Note``        ``// that the two minimum elements may``        ``// be same if minimum element appears``        ``// more than once)``        ``// more than once)``        ``for` `(``int` `i = ``2``; i < n; i++)``        ``{``           ``if` `(arr[i] < first_min)``           ``{``              ``second_min = first_min;``              ``first_min = arr[i];``           ``}``           ``else` `if` `(arr[i] < second_min)``              ``second_min = arr[i];``        ``}``     ` `        ``return` `first_min * second_min;``    ``}``    ` `    ``/* Driver program to test above function */``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `a[] = { ``11``, ``8` `, ``5` `, ``7` `, ``5` `, ``100` `};``        ``int` `n = a.length;``        ``System.out.print(printMinimumProduct(a,n));``     ` `    ``}``}` `// This code is contributed by Arnav Kr. Mandal.`

## Python3

 `# Python program to``# calculate minimum``# product of a pair` `# Function to calculate``# minimum product``# of pair``def` `printMinimumProduct(arr,n):` `    ``# Initialize first and second``    ``# minimums. It is assumed that the``    ``# array has at least two elements.``    ``first_min ``=` `min``(arr[``0``], arr[``1``])``    ``second_min ``=` `max``(arr[``0``], arr[``1``])`` ` `    ``# Traverse remaining array and keep``    ``# track of two minimum elements (Note``    ``# that the two minimum elements may``    ``# be same if minimum element appears``    ``# more than once)``    ``# more than once)``    ``for` `i ``in` `range``(``2``,n):``    ` `         ``if` `(arr[i] < first_min):``       ` `            ``second_min ``=` `first_min``            ``first_min ``=` `arr[i]``       ` `         ``elif` `(arr[i] < second_min):``            ``second_min ``=` `arr[i]``    ` `    ``return` `first_min ``*` `second_min` `# Driver code` `a``=` `[ ``11``, ``8` `, ``5` `, ``7` `, ``5` `, ``100` `]``n ``=` `len``(a)` `print``(printMinimumProduct(a,n))` `# This code is contributed``# by Anant Agarwal.`

## C#

 `// C# program to calculate minimum``// product of a pair``using` `System;` `class` `GFG {``    ` `    ``// Function to calculate minimum``    ``// product of pair``    ``static` `int` `printMinimumProduct(``int` `[]arr,``                                       ``int` `n)``    ``{``        ` `        ``// Initialize first and second``        ``// minimums. It is assumed that``        ``// the array has at least two``        ``// elements.``        ``int` `first_min = Math.Min(arr,``                                    ``arr);``                                    ` `        ``int` `second_min = Math.Max(arr,``                                    ``arr);``    ` `        ``// Traverse remaining array and``        ``// keep track of two minimum``        ``// elements (Note that the two``        ``// minimum elements may be same``        ``// if minimum element appears``        ``// more than once)``        ``for` `(``int` `i = 2; i < n; i++)``        ``{``            ``if` `(arr[i] < first_min)``            ``{``                ``second_min = first_min;``                ``first_min = arr[i];``            ``}``            ``else` `if` `(arr[i] < second_min)``                ``second_min = arr[i];``        ``}``    ` `        ``return` `first_min * second_min;``    ``}``    ` `    ``/* Driver program to test above``    ``function */``    ``public` `static` `void` `Main()``    ``{``        ``int` `[]a = { 11, 8 , 5 , 7 ,``                            ``5 , 100 };``        ``int` `n = a.Length;``        ` `        ``Console.WriteLine(``            ``printMinimumProduct(a, n));``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output:

`25`

Time Complexity: O(n)
Auxiliary Space: O(1)