Given an array of distinct elements and a number x, find if there is a pair with a product equal to x.
Examples :
Input : arr[] = {10, 20, 9, 40};
int x = 400;
Output : Yes
Input : arr[] = {10, 20, 9, 40};
int x = 190;
Output : No
Input : arr[] = {-10, 20, 9, -40};
int x = 400;
Output : Yes
Input : arr[] = {-10, 20, 9, 40};
int x = -400;
Output : Yes
Input : arr[] = {0, 20, 9, 40};
int x = 0;
Output : Yes
Naive approach: Run two loops to consider all possible pairs. For every pair, check if the product is equal to x or not.
// A simple C++ program to find if there is a pair // with given product. #include<bits/stdc++.h> using namespace std;
// Returns true if there is a pair in arr[0..n-1] // with product equal to x. bool isProduct( int arr[], int n, int x)
{ // Consider all possible pairs and check for
// every pair.
for ( int i=0; i<n-1; i++)
for ( int j=i+1; j<n; j++)
if (arr[i] * arr[j] == x)
return true ;
return false ;
} // Driver code int main()
{ int arr[] = {10, 20, 9, 40};
int x = 400;
int n = sizeof (arr)/ sizeof (arr[0]);
isProduct(arr, n, x)? cout << "Yes\n"
: cout << "No\n" ;
x = 190;
isProduct(arr, n, x)? cout << "Yes\n"
: cout << "No\n" ;
return 0;
} |
// Java program to find if there is a pair // with given product. class GFG
{ // Returns true if there is a pair in
// arr[0..n-1] with product equal to x.
boolean isProduct( int arr[], int n, int x)
{
for ( int i= 0 ; i<n- 1 ; i++)
for ( int j=i+ 1 ; j<n; j++)
if (arr[i]*arr[j] == x)
return true ;
return false ;
}
// Driver code
public static void main(String[] args)
{
GFG g = new GFG();
int arr[] = { 10 , 20 , 9 , 40 };
int x = 400 ;
int n = arr.length;
if (g.isProduct(arr, n, x))
System.out.println( "Yes" );
else
System.out.println( "No" );
x = 190 ;
if (g.isProduct(arr, n, x))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
} // This code is contributed by Kamal Rawal |
# Python3 program to find if there # is a pair with given product. # Returns true if there is a # pair in arr[0..n-1] with # product equal to x def isProduct(arr, n, x):
for i in arr:
for j in arr:
if i * j = = x:
return True
return False
# Driver code arr = [ 10 , 20 , 9 , 40 ]
x = 400
n = len (arr)
if (isProduct(arr,n, x) = = True ):
print ( "Yes" )
else :
print ( "No" )
x = 900
if (isProduct(arr, n, x)):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed # by prerna saini |
// C# program to find // if there is a pair // with given product. using System;
class GFG
{ // Returns true if there // is a pair in arr[0..n-1] // with product equal to x. static bool isProduct( int []arr,
int n, int x)
{ for ( int i = 0; i < n - 1; i++)
for ( int j = i + 1; j < n; j++)
if (arr[i] * arr[j] == x)
return true ;
return false ;
} // Driver Code static void Main()
{ int []arr = {10, 20, 9, 40};
int x = 400;
int n = arr.Length;
if (isProduct(arr, n, x))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
x = 190;
if (isProduct(arr, n, x))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
} } // This code is contributed // by Sam007 |
<script> // A simple Javascript program to find if there is a pair // with given product. // Returns true if there is a pair in arr[0..n-1] // with product equal to x. function isProduct(arr, n, x)
{ // Consider all possible pairs and check for
// every pair.
for ( var i=0; i<n-1; i++)
for ( var j=i+1; i<n; i++)
if (arr[i] * arr[j] == x)
return true ;
return false ;
} // Driver code var arr = [10, 20, 9, 40];
var x = 400;
var n = arr.length;
isProduct(arr, n, x)? document.write( "Yes<br>" )
: document.write( "No<br>" );
x = 190; isProduct(arr, n, x)? document.write( "Yes" )
: document.write( "No" );
</script> |
<?php // A simple php program to // find if there is a pair // with given product. // Returns true if there // is a pair in arr[0..n-1] // with product equal to x. function isProduct( $arr , $n , $x )
{ // Consider all possible
// pairs and check for
// every pair.
for ( $i = 0;
$i < $n - 1; $i ++)
for ( $j = $i + 1;
$i < $n ; $i ++)
if ( $arr [ $i ] *
$arr [ $j ] == $x )
return true;
return false;
} // Driver code $arr = array (10, 20, 9, 40);
$x = 400;
$n = count ( $arr );
if (isProduct( $arr , $n , $x ))
echo "Yes\n" ;
else echo "No\n" ;
$x = 190;
if (isProduct( $arr , $n , $x ))
echo "Yes\n" ;
else echo "No\n" ;
// This code is contributed // by Sam007 ?> |
Yes No
Time Complexity: O(n2)
Auxiliary Space: O(1)
Better Solution: We sort the given array. After sorting, we traverse the array and for every element arr[i], we do binary search for x/arr[i] in the subarray on the right of arr[i], i.e., in subarray arr[i+1..n-1]
// A simple C++ program to find if there is a pair // with given product. #include<bits/stdc++.h> using namespace std;
//Function to check if x is present in the array or not // such that arr[i] + x == given sum bool binarysearch( int arr[], int n, int i, int x)
{ int l = 0, r = n - 1;
while (l <= r) {
int mid = (l + r) / 2;
// Checking if the middle element is equal to x
if (arr[mid]*arr[i] == x)
{
if (i!=mid) //if position is no same
{ return true ; }
else { //if position is same
if (mid>0 && arr[mid-1]==arr[mid])
{ return true ; } //if exist adjacent element
else if (mid<n-1 && arr[mid+1]==arr[mid])
{ return true ; } //if exist adjacent element
else { return false ; }
}
}
else if (arr[mid]*arr[i] < x)
{
l = mid + 1;
}
else {
r = mid - 1;
}
}
// return true , if element x is present in the array
// else false
return false ;
} // Returns true if there is a pair in arr[0..n-1] // with product equal to x. bool isProduct( int arr[], int n, int x)
{ sort( arr , arr+n); //sorting array for Binary search
// Consider all possible pairs and check for
// every pair.
for ( int i=0; i<n; i++)
{ //Using binary search to check if there exist a
//index in arr such that arr[i]*arr[index]==given sum
if (binarysearch( arr, n, i , x))
{ return true ; } // Return true if pair found
}
return false ;
} // Driver code int main()
{ int arr[] = {10, 20, 9, 40};
int n = sizeof (arr)/ sizeof (arr[0]);
int x = 400;
// Function call test case 1
if (isProduct(arr, n, x))
{ cout<< "Yes" <<endl; }
else { cout << "No" <<endl; }
x = 190;
// Function call test case 2
if (isProduct(arr, n, x))
{ cout<< "Yes" <<endl; }
else { cout << "No" <<endl; }
return 0;
} |
// A simple Java program to find if there is a pair // with given product. import java.util.*;
public class Gfg {
//Function to check if x is present in the array or not
// such that arr[i] + x == given sum
public static boolean binarysearch( int [] arr, int n, int i, int x)
{
int l = 0 , r = n - 1 ;
while (l <= r) {
int mid = (l + r) / 2 ;
// Checking if the middle element is equal to x
if (arr[mid]*arr[i] == x)
{
if (i!=mid) //if position is no same
{ return true ; }
else { //if position is same
if (mid> 0 && arr[mid- 1 ]==arr[mid])
{ return true ; } //if exist adjacent element
else if (mid<n- 1 && arr[mid+ 1 ]==arr[mid])
{ return true ; } //if exist adjacent element
else { return false ; }
}
}
else if (arr[mid]*arr[i] < x)
{
l = mid + 1 ;
}
else {
r = mid - 1 ;
}
}
// return true , if element x is present in the array
// else false
return false ;
}
// Returns true if there is a pair in arr[0..n-1]
// with product equal to x.
public static boolean isProduct( int [] arr, int n, int x)
{ Arrays.sort(arr); //sorting array for Binary search
// Consider all possible pairs and check for
// every pair.
for ( int i= 0 ; i<n; i++)
{ //Using binary search to check if there exist a
//index in arr such that arr[i]*arr[index]==given sum
if (binarysearch( arr, n, i , x))
{ return true ; } // Return true if pair found
}
return false ;
}
// Driver code
public static void main(String[] args)
{
int [] arr = { 10 , 20 , 9 , 40 };
int n = arr.length;
int x = 400 ;
// Function call test case 1
if (isProduct(arr, n, x))
{ System.out.println( "Yes" ); }
else { System.out.println( "No" ); }
x = 190 ;
// Function call test case 2
if (isProduct(arr, n, x))
{ System.out.println( "Yes" ); }
else { System.out.println( "No" ); }
}
} |
# Python program to find if there is a pair # with given product. # Function to check if x is present in the array or not # such that arr[i] * x == given product def binarysearch(arr, n, i, x):
l = 0
r = n - 1
while l < = r:
mid = (l + r) / / 2
# Checking if the middle element is equal to x
if arr[mid] * arr[i] = = x:
# if position is not same
if i ! = mid:
return True
else :
# if position is same
if mid > 0 and arr[mid - 1 ] = = arr[mid]:
# if exist adjacent element
return True
elif mid < n - 1 and arr[mid + 1 ] = = arr[mid]:
# if exist adjacent element
return True
else :
return False
elif arr[mid] * arr[i] < x:
l = mid + 1
else :
r = mid - 1
# return True, if element x is present in the array, else False
return False
# Returns True if there is a pair in arr[0..n-1] # with product equal to x. def isProduct(arr, n, x):
# Sorting array for Binary search
arr.sort()
# Consider all possible pairs and check for every pair
for i in range (n):
# Using binary search to check if there exists an
# index in arr such that arr[i] * arr[index] == given product
if binarysearch(arr, n, i, x):
return True # Return True if pair found
return False
# Driver code arr = [ 10 , 20 , 9 , 40 ]
n = len (arr)
x = 400
# Function call test case 1 if isProduct(arr, n, x):
print ( "Yes" )
else :
print ( "No" )
x = 190
# Function call test case 2 if isProduct(arr, n, x):
print ( "Yes" )
else :
print ( "No" )
|
using System;
class Program
{ // Function to check if x is present in the array or not
// such that arr[i] + x == given sum
static bool binarysearch( int [] arr, int n, int i, int x)
{
int l = 0, r = n - 1;
while (l <= r)
{
int mid = (l + r) / 2;
// Checking if the middle element is equal to x
if (arr[mid] * arr[i] == x)
{
if (i != mid) //if position is not the same
{
return true ;
}
else
{ //if position is same
if (mid > 0 && arr[mid - 1] == arr[mid])
{
return true ;
} //if exist adjacent element
else if (mid < n - 1 && arr[mid + 1] == arr[mid])
{
return true ;
} //if exist adjacent element
else
{
return false ;
}
}
}
else if (arr[mid] * arr[i] < x)
{
l = mid + 1;
}
else
{
r = mid - 1;
}
}
// return true , if element x is present in the array
// else false
return false ;
}
// Returns true if there is a pair in arr[0..n-1]
// with product equal to x.
static bool isProduct( int [] arr, int n, int x)
{
Array.Sort(arr); //sorting array for Binary search
// Consider all possible pairs and check for
// every pair.
for ( int i = 0; i < n; i++)
{
//Using binary search to check if there exist a
//index in arr such that arr[i]*arr[index]==given sum
if (binarysearch(arr, n, i, x))
{
return true ; // Return true if pair found
}
}
return false ;
}
// Driver code
static void Main()
{
int [] arr = { 10, 20, 9, 40 };
int n = arr.Length;
int x = 400;
// Function call test case 1
if (isProduct(arr, n, x))
{
Console.WriteLine( "Yes" );
}
else
{
Console.WriteLine( "No" );
}
x = 190;
// Function call test case 2
if (isProduct(arr, n, x))
{
Console.WriteLine( "Yes" );
}
else
{
Console.WriteLine( "No" );
}
}
} |
// Javascript equivalent code function binarysearch(arr, n, i, x) {
let l = 0;
let r = n - 1;
while (l <= r) {
let mid = Math.floor((l + r) / 2);
// Checking if the middle element is equal to x
if (arr[mid] * arr[i] == x) {
// if position is not same
if (i != mid) {
return true ;
} else {
// if position is same
if (mid > 0 && arr[mid - 1] == arr[mid]) {
// if exist adjacent element
return true ;
} else if (mid < n - 1 && arr[mid + 1] == arr[mid]) {
// if exist adjacent element
return true ;
} else {
return false ;
}
}
} else if (arr[mid] * arr[i] < x) {
l = mid + 1;
} else {
r = mid - 1;
}
}
// return True, if element x is present in the array, else False
return false ;
} // Returns True if there is a pair in arr[0..n-1] // with product equal to x. function isProduct(arr, n, x) {
// Sorting array for Binary search
arr.sort();
// Consider all possible pairs and check for every pair
for (let i = 0; i < n; i++) {
// Using binary search to check if there exists an
// index in arr such that arr[i] * arr[index] == given product
if (binarysearch(arr, n, i, x)) {
return true ; // Return True if pair found
}
}
return false ;
} // Driver code let arr = [10, 20, 9, 40]; let n = arr.length; let x = 400; // Function call test case 1 if (isProduct(arr, n, x)) {
console.log( "Yes" );
} else {
console.log( "No" );
} x = 190; // Function call test case 2 if (isProduct(arr, n, x)) {
console.log( "Yes" );
} else {
console.log( "No" );
} |
Yes No
Time Complexity: O(n log n)
Auxiliary Space: O(1)
Another Approach ( Using two pointer technique):
This approach to solve the problem is to sort the array in ascending order and then use Two pointer approach ( l = 0, r = arr.size()-1) to traverse that sorted array. If product of arr[l] and arr[r] is equal to x, then return true. If product is less than k then increase l else decrease r.
Algorithm:
- Define a function isProduct that takes an integer array arr, an integer n, and an integer x as inputs and returns a boolean value. The function first sorts the array arr in ascending order. It then initializes two indices l and r to the beginning and end of the array, respectively. While l < r, the function calculates the product of the elements at indices l and r, compares it with x, and adjusts l and r accordingly. If the product equals x, it returns true. Otherwise, if the product is less than x, it increments l to increase the value of the product, and if the product is greater than x, it decrements r to decrease the value of the product. If no such pair exists in the array, the function returns false.
-
In the main function:
a. Create an integer array according to the input specification.
b. Initialize an integer n as the size of the array.
c. Initialize an integer x according to the input specification.
d. Call the isProduct function with the array, n, and x as inputs.
e. Print “Yes” if the function returns true, and “No” otherwise.
Below is the implementation of the above idea:
// C++ code for the approach #include <bits/stdc++.h> using namespace std;
// Returns true if there is a pair in arr[0..n-1] // with product equal to x. bool isProduct( int arr[], int n, int x) {
// sort the array arr
sort(arr, arr + n);
int l = 0, r = n - 1;
// traverse the array inorder
// using two pointer l and r
while (l < r) {
int prod = arr[l] * arr[r];
// if product of element
// at the two pinters is k
// return this as res
if (prod == x) {
return true ;
}
// if prod is less then
// increase l as we have to
// increase element value
else if (prod < x)
l++;
// if prod is greater then
// decrease r as we have to
// decrease element value
else
r--;
}
return false ;
} // Driver code int main() {
int arr[] = { 10, 20, 9, 40 };
int n = sizeof (arr) / sizeof (arr[0]);
int x = 400;
// Function call test case 1
if (isProduct(arr, n, x)) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
x = 190;
// Function call test case 2
if (isProduct(arr, n, x)) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
return 0;
} // This code is contributed by Chandramani Kumar |
import java.util.Arrays;
class Main {
public static void main(String[] args) {
int [] arr = { 10 , 20 , 9 , 40 };
int n = arr.length;
int x = 400 ;
// Test case 1
if (isProduct(arr, n, x)) {
System.out.println( "Yes" );
} else {
System.out.println( "No" );
}
x = 190 ;
// Test case 2
if (isProduct(arr, n, x)) {
System.out.println( "Yes" );
} else {
System.out.println( "No" );
}
}
static boolean isProduct( int [] arr, int n, int x) {
// Sort the array arr
Arrays.sort(arr);
int l = 0 , r = n - 1 ;
// Traverse the array using two pointers l and r
while (l < r) {
int prod = arr[l] * arr[r];
// If the product of elements at the two pointers is x, return true
if (prod == x) {
return true ;
}
// If prod is less than x, increase l as we have to increase element value
else if (prod < x) {
l++;
}
// If prod is greater than x, decrease r as we have to decrease element value
else {
r--;
}
}
return false ;
}
} // This code is contributed by Dwaipayan Bandyopadhyay |
# Python code for the approach def isProduct(arr, n, x):
# Sort the array arr
arr.sort()
l, r = 0 , n - 1
# Traverse the array using two pointers l and r
while l < r:
prod = arr[l] * arr[r]
# If product of elements at the two pointers is x, return True
if prod = = x:
return True
# If prod is less than x, increase l as we have to increase element value
elif prod < x:
l + = 1
# If prod is greater than x, decrease r as we have to decrease element value
else :
r - = 1
return False
# Driver code arr = [ 10 , 20 , 9 , 40 ]
n = len (arr)
x = 400
# test case 1 if isProduct(arr, n, x):
print ( "Yes" )
else :
print ( "No" )
x = 190
# test case 2 if isProduct(arr, n, x):
print ( "Yes" )
else :
print ( "No" )
|
using System;
public class GFG{
public static bool isProduct( int [] arr, int n, int x)
{
// Sort the array arr
Array.Sort(arr);
int l = 0, r = n - 1;
// Traverse the array using two pointers l and r
while (l < r)
{
int prod = arr[l] * arr[r];
// if product of element
// at the two pinters is x
// return this as res
if (prod == x)
{
return true ;
}
// If prod is less than x,
//increase l as we have to increase element value
else if (prod < x)
{
l++;
}
// If prod is greater than x,
//decrease r as we have to decrease element value
else
{
r--;
}
}
return false ;
}
public static void Main()
{
int [] arr = { 10, 20, 9, 40 };
int n = arr.Length;
int x = 400;
if (isProduct(arr, n, x))
{
Console.WriteLine( "Yes" );
}
else
{
Console.WriteLine( "No" );
}
x = 190;
if (isProduct(arr, n, x))
{
Console.WriteLine( "Yes" );
}
else
{
Console.WriteLine( "No" );
}
}
} //This code is contributed by Rohit Singh |
// JS code for the approach // Returns true if there is a pair in arr[0..n-1] // with product equal to x. function isProduct( arr, n, x) {
// sort the array arr
arr.sort((a, b) => a - b);
let l = 0, r = n - 1;
// traverse the array inorder
// using two poleter l and r
while (l < r) {
let prod = arr[l] * arr[r];
// if product of element
// at the two pleters is k
// return this as res
if (prod == x) {
return true ;
}
// if prod is less then
// increase l as we have to
// increase element value
else if (prod < x)
l++;
// if prod is greater then
// decrease r as we have to
// decrease element value
else
r--;
}
return false ;
} // Driver code let arr = [10, 20, 9, 40 ]; let n = arr.length; let x = 400; // Function call test case 1 if (isProduct(arr, n, x)) {
console.log( "Yes" );
} else {
console.log( "No" );
} x = 190; // Function call test case 2 if (isProduct(arr, n, x)) {
console.log( "Yes" );
} else {
console.log( "No" );
} |
Yes No
Time Complexity: O(N * logN) where N is size of input array. This is because sort has been called which takes N*logN time.
Space Complexity: O(1) as no extra space has been taken.
Efficient Solution: We can improve time complexity to O(n) using hashing. Below are the steps.
- Create an empty hash table
-
Traverse array elements and do the following for every element arr[i].
- If arr[i] is 0 and x is also 0, return true, else ignore arr[i].
- If x % arr[i] is 0 and x/arr[i] exists in the table, it returns true.
- Insert arr[i] into the hash table.
- Return false
Below is the implementation of the above idea.
// C++ program to find if there is a pair // with given product. #include<bits/stdc++.h> using namespace std;
// Returns true if there is a pair in arr[0..n-1] // with product equal to x. bool isProduct( int arr[], int n, int x)
{ if (n < 2)
return false ;
// Create an empty set and insert first
// element into it
unordered_set< int > s;
// Traverse remaining elements
for ( int i=0; i<n; i++)
{
// 0 case must be handles explicitly as
// x % 0 is undefined behaviour in C++
if (arr[i] == 0)
{
if (x == 0)
return true ;
else
continue ;
}
// x/arr[i] exists in hash, then we
// found a pair
if (x%arr[i] == 0)
{
if (s.find(x/arr[i]) != s.end())
return true ;
// Insert arr[i]
s.insert(arr[i]);
}
}
return false ;
} // Driver code int main()
{ int arr[] = {10, 20, 9, 40};
int x = 400;
int n = sizeof (arr)/ sizeof (arr[0]);
isProduct(arr, n, x)? cout << "Yes\n"
: cout << "No" ;
x = 190;
isProduct(arr, n, x)? cout << "Yes\n"
: cout << "No" ;
return 0;
} |
// Java program if there exists a pair for given product import java.util.HashSet;
class GFG
{ // Returns true if there is a pair in arr[0..n-1]
// with product equal to x.
static boolean isProduct( int arr[], int n, int x)
{
// Create an empty set and insert first
// element into it
HashSet<Integer> hset = new HashSet<>();
if (n < 2 )
return false ;
// Traverse remaining elements
for ( int i = 0 ; i < n; i++)
{
// 0 case must be handles explicitly as
// x % 0 is undefined
if (arr[i] == 0 )
{
if (x == 0 )
return true ;
else
continue ;
}
// x/arr[i] exists in hash, then we
// found a pair
if (x % arr[i] == 0 )
{
if (hset.contains(x / arr[i]))
return true ;
// Insert arr[i]
hset.add(arr[i]);
}
}
return false ;
}
// driver code
public static void main(String[] args)
{
int arr[] = { 10 , 20 , 9 , 40 };
int x = 400 ;
int n = arr.length;
if (isProduct(arr, arr.length, x))
System.out.println( "Yes" );
else
System.out.println( "No" );
x = 190 ;
if (isProduct(arr, arr.length, x))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
} // This code is contributed by Kamal Rawal |
# Python3 program to find if there # is a pair with the given product. # Returns true if there is a pair in # arr[0..n-1] with product equal to x. def isProduct(arr, n, x):
if n < 2 :
return False
# Create an empty set and insert
# first element into it
s = set ()
# Traverse remaining elements
for i in range ( 0 , n):
# 0 case must be handles explicitly as
# x % 0 is undefined behaviour in C++
if arr[i] = = 0 :
if x = = 0 :
return True
else :
continue
# x/arr[i] exists in hash, then
# we found a pair
if x % arr[i] = = 0 :
if x / / arr[i] in s:
return True
# Insert arr[i]
s.add(arr[i])
return False
# Driver code if __name__ = = "__main__" :
arr = [ 10 , 20 , 9 , 40 ]
x = 400
n = len (arr)
if isProduct(arr, n, x):
print ( "Yes" )
else :
print ( "No" )
x = 190
if isProduct(arr, n, x):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by # Rituraj Jain |
// C# program if there exists a // pair for given product using System;
using System.Collections.Generic;
class GFG
{ // Returns true if there is a pair // in arr[0..n-1] with product equal to x. public static bool isProduct( int [] arr,
int n, int x)
{ // Create an empty set and insert
// first element into it
HashSet< int > hset = new HashSet< int >();
if (n < 2)
{
return false ;
}
// Traverse remaining elements
for ( int i = 0; i < n; i++)
{
// 0 case must be handles explicitly
// as x % 0 is undefined
if (arr[i] == 0)
{
if (x == 0)
{
return true ;
}
else
{
continue ;
}
}
// x/arr[i] exists in hash, then
// we found a pair
if (x % arr[i] == 0)
{
if (hset.Contains(x / arr[i]))
{
return true ;
}
// Insert arr[i]
hset.Add(arr[i]);
}
}
return false ;
} // Driver Code public static void Main( string [] args)
{ int [] arr = new int [] {10, 20, 9, 40};
int x = 400;
int n = arr.Length;
if (isProduct(arr, arr.Length, x))
{
Console.WriteLine( "Yes" );
}
else
{
Console.WriteLine( "No" );
}
x = 190;
if (isProduct(arr, arr.Length, x))
{
Console.WriteLine( "Yes" );
}
else
{
Console.WriteLine( "No" );
}
} } // This code is contributed by Shrikant13 |
<script> // Javascript program if there exists a pair for given product // Returns true if there is a pair in arr[0..n-1] // with product equal to x.
function isProduct(arr, n, x)
{
// Create an empty set and insert first
// element into it
let hset = new Set();
if (n < 2)
return false ;
// Traverse remaining elements
for (let i = 0; i < n; i++)
{
// 0 case must be handles explicitly as
// x % 0 is undefined
if (arr[i] == 0)
{
if (x == 0)
return true ;
else
continue ;
}
// x/arr[i] exists in hash, then we
// found a pair
if (x % arr[i] == 0)
{
if (hset.has(x / arr[i]))
return true ;
// Insert arr[i]
hset.add(arr[i]);
}
}
return false ;
}
// Driver program let arr = [10, 20, 9, 40];
let x = 400;
let n = arr.length;
if (isProduct(arr, arr.length, x))
document.write( "Yes" + "<br/>" );
else
document.write( "No" + "<br/>" );
x = 190;
if (isProduct(arr, arr.length, x))
document.write( "Yes" + "<br/>" );
else
document.write( "No" + "<br/>" );
</script> |
Yes No
Time Complexity : O(n)
Auxiliary Space: O(n)
In the next set, we will be discussing approaches to print all pairs with products equal to 0.