Contar pares cuyos productos existen en array

Dada una array, cuente los pares cuyo valor de producto está presente en la array. 
Ejemplos: 
 

Input : arr[] = {6, 2, 4, 12, 5, 3}
Output : 3
       All pairs whose product exist in array 
       (6 , 2) (2, 3) (4, 3)   

Input :  arr[] = {3, 5, 2, 4, 15, 8}
Output : 2 

Una solución simple es generar todos los pares de una array dada y verificar si el producto existe en la array. Si existe, entonces incremente el conteo. Finalmente devuelva la cuenta.
A continuación se muestra la implementación de la idea anterior. 
 

C++

// C++ program to count pairs whose product exist in array
#include<bits/stdc++.h>
using namespace std;
 
// Returns count of pairs whose product exists in arr[]
int countPairs( int arr[] ,int n)
{
    int result = 0;
    for (int i = 0; i < n ; i++)
    {
        for (int j = i+1 ; j < n ; j++)
        {
            int product = arr[i] * arr[j] ;
 
            // find product in an array
            for (int k = 0; k < n; k++)
            {
                // if product found increment counter
                if (arr[k] == product)
                {
                    result++;
                    break;
                }
            }
        }
    }
 
    // return Count of all pair whose product exist in array
    return result;
}
 
//Driver program
int main()
{
    int arr[] = {6 ,2 ,4 ,12 ,5 ,3} ;
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << countPairs(arr, n);
    return 0;
}

Java

// Java program to count pairs
// whose product exist in array
import java.io.*;
 
class GFG
{
     
// Returns count of pairs
// whose product exists in arr[]
static int countPairs(int arr[],
                      int n)
{
    int result = 0;
    for (int i = 0; i < n ; i++)
    {
        for (int j = i + 1 ; j < n ; j++)
        {
            int product = arr[i] * arr[j] ;
 
            // find product
            // in an array
            for (int k = 0; k < n; k++)
            {
                // if product found
                // increment counter
                if (arr[k] == product)
                {
                    result++;
                    break;
                }
            }
        }
    }
 
    // return Count of all pair
    // whose product exist in array
    return result;
}
 
// Driver Code
public static void main (String[] args)
{
int arr[] = {6, 2, 4, 12, 5, 3} ;
int n = arr.length;
System.out.println(countPairs(arr, n));
}
}
 
// This code is contributed by anuj_67.

Python 3

# Python program to count pairs whose
# product exist in array
 
# Returns count of pairs whose
# product exists in arr[]
def countPairs(arr, n):
 
    result = 0;
    for i in range (0, n):
 
        for j in range(i + 1, n):
             
            product = arr[i] * arr[j] ;
 
            # find product in an array
            for k in range (0, n):
         
                # if product found increment counter
                if (arr[k] == product):
                    result = result + 1;
                    break;
 
    # return Count of all pair whose
    # product exist in array
    return result;
 
# Driver program
arr = [6, 2, 4, 12, 5, 3] ;
n = len(arr);
print(countPairs(arr, n));
     
# This code is contributed
# by Shivi_Aggarwal

C#

// C# program to count pairs
// whose product exist in array
using System;
 
class GFG
{
 
// Returns count of pairs
// whose product exists in arr[]
public static int countPairs(int[] arr,
                             int n)
{
    int result = 0;
    for (int i = 0; i < n ; i++)
    {
        for (int j = i + 1 ; j < n ; j++)
        {
            int product = arr[i] * arr[j];
 
            // find product in an array
            for (int k = 0; k < n; k++)
            {
                // if product found
                // increment counter
                if (arr[k] == product)
                {
                    result++;
                    break;
                }
            }
        }
    }
 
    // return Count of all pair
    // whose product exist in array
    return result;
}
 
// Driver Code
public static void Main(string[] args)
{
    int[] arr = new int[] {6, 2, 4, 12, 5, 3};
    int n = arr.Length;
    Console.WriteLine(countPairs(arr, n));
}
}
 
// This code is contributed by Shrikant13

PHP

<?php
// PHP program to count pairs
// whose product exist in array
 
// Returns count of pairs whose
// product exists in arr[]
function countPairs($arr, $n)
{
    $result = 0;
    for ($i = 0; $i < $n ; $i++)
    {
        for ($j = $i + 1 ; $j < $n ; $j++)
        {
            $product = $arr[$i] * $arr[$j] ;
 
            // find product in an array
            for ($k = 0; $k < $n; $k++)
            {
                // if product found increment counter
                if ($arr[$k] == $product)
                {
                    $result++;
                    break;
                }
            }
        }
    }
 
    // return Count of all pair whose
    // product exist in array
    return $result;
}
 
// Driver Code
$arr = array(6, 2, 4, 12, 5, 3);
$n = sizeof($arr);
echo countPairs($arr, $n);
 
// This code is contributed
// by Akanksha Rai

Javascript

<script>
// javascript program to count pairs
// whose product exist in array
 
    // Returns count of pairs
    // whose product exists in arr
    function countPairs(arr, n)
    {
        var result = 0;
        for (i = 0; i < n; i++)
        {
            for (j = i + 1; j < n; j++)
            {
                var product = arr[i] * arr[j];
 
                // find product
                // in an array
                for (k = 0; k < n; k++)
                {
                 
                    // if product found
                    // increment counter
                    if (arr[k] == product)
                    {
                        result++;
                        break;
                    }
                }
            }
        }
 
        // return Count of all pair
        // whose product exist in array
        return result;
    }
 
    // Driver Code
        var arr = [ 6, 2, 4, 12, 5, 3 ];
        var n = arr.length;
        document.write(countPairs(arr, n));
 
// This code is contributed by Rajput-Ji
</script>

Producción: 
 

3

Complejidad temporal: O(n 3 )

Espacio auxiliar: O (1)
Una solución eficiente es usar ‘hash’ que almacena todos los elementos de la array. Genere todos los pares posibles de la array dada ‘arr’ y verifique que el producto de cada par esté en ‘hash’. Si existe, entonces incremente el conteo. Finalmente devuelva la cuenta. 
A continuación se muestra la implementación de la idea anterior. 
 

C++

// A hashing based C++ program to count pairs whose product
// exists in arr[]
#include<bits/stdc++.h>
using namespace std;
 
// Returns count of pairs whose product exists in arr[]
int countPairs(int arr[] , int n)
{
    int result = 0;
 
    // Create an empty hash-set that store all array element
    set< int > Hash;
 
    // Insert all array element into set
    for (int i = 0 ; i < n; i++)
        Hash.insert(arr[i]);
 
    // Generate all pairs and check is exist in 'Hash' or not
    for (int i = 0 ; i < n; i++)
    {
        for (int j = i + 1; j<n ; j++)
        {
            int product = arr[i]*arr[j];
 
            // if product exists in set then we increment
            // count by 1
            if (Hash.find(product) != Hash.end())
                result++;
        }
    }
 
    // return count of pairs whose product exist in array
    return result;
}
 
// Driver program
int main()
{
    int arr[] = {6 ,2 ,4 ,12 ,5 ,3};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << countPairs(arr, n) ;
    return 0;
}

Java

// A hashing based Java program to count pairs whose product
// exists in arr[]
import java.util.*;
 
class GFG
{
 
    // Returns count of pairs whose product exists in arr[]
    static int countPairs(int arr[], int n) {
        int result = 0;
 
        // Create an empty hash-set that store all array element
        HashSet< Integer> Hash = new HashSet<>();
 
        // Insert all array element into set
        for (int i = 0; i < n; i++)
        {
            Hash.add(arr[i]);
        }
 
        // Generate all pairs and check is exist in 'Hash' or not
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                int product = arr[i] * arr[j];
 
                // if product exists in set then we increment
                // count by 1
                if (Hash.contains(product))
                {
                    result++;
                }
            }
        }
 
        // return count of pairs whose product exist in array
        return result;
    }
 
    // Driver program
    public static void main(String[] args)
    {
        int arr[] = {6, 2, 4, 12, 5, 3};
        int n = arr.length;
        System.out.println(countPairs(arr, n));
    }
}
 
// This code has been contributed by 29AjayKumar

Python3

# A hashing based C++ program to count
# pairs whose product exists in arr[]
 
# Returns count of pairs whose product
# exists in arr[]
def countPairs(arr, n):
    result = 0
 
    # Create an empty hash-set that
    # store all array element
    Hash = set()
 
    # Insert all array element into set
    for i in range(n):
        Hash.add(arr[i])
 
    # Generate all pairs and check is
    # exist in 'Hash' or not
    for i in range(n):
        for j in range(i + 1, n):
            product = arr[i] * arr[j]
 
            # if product exists in set then
            # we increment count by 1
            if product in(Hash):
                result += 1
     
    # return count of pairs whose
    # product exist in array
    return result
 
# Driver Code
if __name__ == '__main__':
    arr = [6, 2, 4, 12, 5, 3]
    n = len(arr)
    print(countPairs(arr, n))
     
# This code is contributed by
# Sanjit_Prasad

C#

// A hashing based C# program to count pairs whose product
// exists in arr[]
using System;
using System.Collections.Generic;
 
class GFG
{
 
    // Returns count of pairs whose product exists in arr[]
    static int countPairs(int []arr, int n)
    {
        int result = 0;
 
        // Create an empty hash-set that store all array element
        HashSet<int> Hash = new HashSet<int>();
 
        // Insert all array element into set
        for (int i = 0; i < n; i++)
        {
            Hash.Add(arr[i]);
        }
 
        // Generate all pairs and check is exist in 'Hash' or not
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                int product = arr[i] * arr[j];
 
                // if product exists in set then we increment
                // count by 1
                if (Hash.Contains(product))
                {
                    result++;
                }
            }
        }
 
        // return count of pairs whose product exist in array
        return result;
    }
 
    // Driver code
    public static void Main(String[] args)
    {
        int []arr = {6, 2, 4, 12, 5, 3};
        int n = arr.Length;
        Console.WriteLine(countPairs(arr, n));
    }
}
 
/* This code contributed by PrinciRaj1992 */

Javascript

<script>
// A hashing based javascript program to count pairs whose product
// exists in arr
 
    // Returns count of pairs whose product exists in arr
    function countPairs(arr , n) {
        var result = 0;
 
        // Create an empty hash-set that store all array element
        var Hash = new Set();
 
        // Insert all array element into set
        for (i = 0; i < n; i++) {
            Hash.add(arr[i]);
        }
 
        // Generate all pairs and check is exist in 'Hash' or not
        for (i = 0; i < n; i++) {
            for (j = i + 1; j < n; j++) {
                var product = arr[i] * arr[j];
 
                // if product exists in set then we increment
                // count by 1
                if (Hash.has(product)) {
                    result++;
                }
            }
        }
 
        // return count of pairs whose product exist in array
        return result;
    }
 
    // Driver program
     
        var arr = [ 6, 2, 4, 12, 5, 3 ];
        var n = arr.length;
        document.write(countPairs(arr, n));
 
// This code contributed by Rajput-Ji
</script>

Producción: 
 

3

Complejidad del tiempo: O(n 2 ) ‘Bajo el supuesto insertar, encontrar la operación tomar O(1) Tiempo ‘

Espacio Auxiliar: O(n)

Este artículo es una contribución de Aarti_Rathi y Nishant_Singh (Pintu) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *