Encuentre números enteros que dividan el número máximo de elementos de la array

Dada una array arr[] de enteros, la tarea es encontrar el elemento (que no sea 1) que sea el factor del número máximo de elementos de la array. Si existen múltiples factores de este tipo, imprima todos los factores en orden ascendente.

Ejemplos:  

Entrada: arr[] = {10, 20} 
Salida: 2 5 10 
Los factores de 10 son 1, 2, 5, 10. 
Los factores de 20 son 1, 2, 4, 5, 10, 20. 
Los factores distintos de 1, que ocurren la mayoría de las veces (dos veces) son 2, 5, 10.

Entrada: arr[] = {120, 15, 24, 63, 18} 
Salida:

Acercarse:  

  • Inicialice dos listas, una para almacenar el rango (el número de elementos de los que el número entero es un factor) del factor y otra para almacenar el factor.
  • Comience desde 2 hasta el elemento máximo de la array.
  • Cuente el número de elementos en la array. El entero actual es un factor de.
  • Agregue el conteo a la lista de clasificación y los números enteros a la lista de factores.
  • Encuentre el número entero con el rango máximo.
  • Imprime todos los elementos con el mismo rango.

A continuación se muestra la implementación del enfoque anterior: 

C++

// CPP implementation of the approach
#include<bits/stdc++.h>
using namespace std;
 
// Function to print the integers that divide
// the maximum number of elements from the array
void maximumFactor(vector<int>arr)
{
    // Initialize two lists
    // to store rank and factors
    int n = arr.size();
    vector<int> rank;
    vector<int> factors;
    int max = *max_element(arr.begin(), arr.end());
     
    // Start from 2 till the maximum element in arr
    for (int i = 2; i <= max; i++)
    {
        // Initialize a variable
        // to count the number of elements
        // it is a factor of
        int count = 0;
        for (int j = 0; j < n; j++)
        {
            if (arr[j] % i == 0)
                count+= 1;
            rank.push_back(count);
            factors.push_back(i);
        }
         
    }
         
         
     
    // Maximum rank in the rank list
    int m = *max_element(rank.begin(),rank.end());
    for (int i = 0; i < rank.size(); i++)
    {
        // Print all the elements with rank m
        if (rank[i] == m)
            cout << factors[i] <<" ";
    }
         
}
 
// Driver code
int main()
{
    vector<int>arr = {120, 15, 24, 63, 18};
    maximumFactor(arr);
}
 
// This code is contributed by
// Surendra_Gangwar

Java

// Java implementation of the approach
import java.util.*;
class GFG
{
     
// Function to print the integers that
// divide the maximum number of
// elements from the array
static void maximumFactor(int []arr)
{
     
    // Initialize two lists to store
    // rank and factors
    int[] rank = new int[Arrays.stream(arr).max().getAsInt() + 1];
    int[] factors = new int[Arrays.stream(arr).max().getAsInt() + 1];
    int g = 0;
     
    // Start from 2 till the maximum
    // element in arr
    for (int i = 2;
             i <= Arrays.stream(arr).max().getAsInt(); i++)
    {
        // Initialize a variable to count
        // the number of elements it is a
        // factor of
        int count = 0;
        for (int j = 0; j < arr.length; j++)
            if (arr[j] % i == 0)
                count += 1;
                 
        rank[g] = count;
        factors[g] = i;
        g++;
    }
     
    // Maximum rank in the rank list
    int m = Arrays.stream(rank).max().getAsInt();
    for (int i = 0; i < rank.length; i++)
    {
        // Print all the elements with rank m
        if (rank[i] == m)
            System.out.print(factors[i] + " ");
    }
}
 
// Driver code
public static void main (String[] args)
{
    int []arr = {120, 15, 24, 63, 18};
    maximumFactor(arr);
}
}
 
// This code is contributed by
// chandan_jnu

Python

# Python3 implementation of the approach
 
# Function to print the integers that divide
# the maximum number of elements from the array
def maximumFactor(arr):
     
    # Initialize two lists
    # to store rank and factors
    rank, factors = [], []
     
    # Start from 2 till the maximum element in arr
    for i in range(2, max(arr)+1):
         
        # Initialize a variable
        # to count the number of elements
        # it is a factor of
        count = 0
        for j in arr:
            if j % i == 0:count+= 1
        rank.append(count)
        factors.append(i)
     
    # Maximum rank in the rank list
    m = max(rank)
    for i in range(len(rank)):
         
        # Print all the elements with rank m
        if rank[i]== m:
            print(factors[i], end =" ")
 
# Driver code
arr = [120, 15, 24, 63, 18]
 
maximumFactor(arr)

C#

// C# implementation of the approach
using System;
using System.Collections;
using System.Linq;
 
class GFG
{
     
// Function to print the integers that
// divide the maximum number of
// elements from the array
static void maximumFactor(int []arr)
{
     
    // Initialize two lists to store
    // rank and factors
    int[] rank = new int[arr.Max() + 1];
    int[] factors = new int[arr.Max() + 1];
    int g = 0;
     
    // Start from 2 till the maximum
    // element in arr
    for (int i = 2; i <= arr.Max(); i++)
    {
        // Initialize a variable to count
        // the number of elements it is a
        // factor of
        int count = 0 ;
        for (int j = 0; j < arr.Length; j++)
            if (arr[j] % i == 0)
                count += 1;
                 
        rank[g]=count;
        factors[g]=i;
        g++;
    }
     
    // Maximum rank in the rank list
    int m = rank.Max();
    for (int i = 0; i < rank.Length; i++)
    {
        // Print all the elements with rank m
        if ((int)rank[i] == m)
            Console.Write(factors[i]+" ");
    }
}
 
// Driver code
static void Main()
{
 
int []arr = {120, 15, 24, 63, 18};
maximumFactor(arr);
}
}
 
// This code is contributed by chandan_jnu

PHP

<?php
// PHP implementation of the approach
 
// Function to print the integers that
// divide the maximum number of
// elements from the array
function maximumFactor($arr)
{
     
    // Initialize two lists to store
    // rank and factors
    $rank = array();
    $factors = array();
     
    // Start from 2 till the maximum
    // element in arr
    for ($i = 2; $i <= max($arr); $i++)
    {
        // Initialize a variable to count
        // the number of elements it is a
        // factor of
        $count = 0 ;
        for ($j = 0; $j < sizeof($arr); $j++)
            if ($arr[$j] % $i == 0)
                $count += 1;
                 
        array_push($rank, $count);
        array_push($factors, $i);
    }
     
    // Maximum rank in the rank list
    $m = max($rank);
    for ($i = 0; $i < sizeof($rank); $i++)
    {
        // Print all the elements with rank m
        if ($rank[$i] == $m)
            echo $factors[$i], " ";
    }
}
 
// Driver code
$arr = array(120, 15, 24, 63, 18);
 
maximumFactor($arr)
 
// This code is contributed by Ryuga
?>

Javascript

<script>
 
// Javascript implementation of the approach
 
// Function to print the integers that divide
// the maximum number of elements from the array
function maximumFactor(arr)
{
    // Initialize two lists
    // to store rank and factors
    var n = arr.length;
    var rank = [];
    var factors = [];
    var max = arr.reduce((a,b)=> Math.max(a,b));
     
    // Start from 2 till the maximum element in arr
    for (var i = 2; i <= max; i++)
    {
        // Initialize a variable
        // to count the number of elements
        // it is a factor of
        var count = 0;
        for (var j = 0; j < n; j++)
        {
            if (arr[j] % i == 0)
                count+= 1;
            rank.push(count);
            factors.push(i);
        }
         
    }
         
         
     
    // Maximum rank in the rank list
    var m = rank.reduce((a,b)=>Math.max(a,b));
    for (var i = 0; i < rank.length; i++)
    {
        // Print all the elements with rank m
        if (rank[i] == m)
            document.write( factors[i] + " ");
    }
         
}
 
// Driver code
var arr = [120, 15, 24, 63, 18];
maximumFactor(arr);
 
 
</script>
Producción: 

3

 

Complejidad de tiempo: O(n * max(arr)), donde max(arr) es el elemento más grande de la array arr.

Espacio Auxiliar: O(n * max(arr))

Publicación traducida automáticamente

Artículo escrito por SanjayR 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 *