Encuentra el superpoder de un número dado

Dado un número entero  n   . La tarea es encontrar la superpotencia a partir de la factorización de  n   .
La Superpotencia es la potencia más alta entre las potencias de los números primos en la factorización de un número n.
Ejemplos :  

Input :  n = 32
Output :  5

Input : n = 240
Output : 4

Para encontrar la superpotencia de cualquier número dado  n   , tenemos que completar la factorización de n y encontrar la potencia más alta entre todos los factores primos.
Nota : El uso de Sieve con el fin de almacenar una lista de números primos es útil en términos de optimización.
Algoritmo
 

  • Iterar sobre números primos y calcular la factorización de n.
  • Para cada número primo entre la lista almacenada de números primos y que también es un factor de n, 
    encuentra su potencia y comprueba si tiene superpotencia.

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

C++

// CPP for finding super power of n
#include <bits/stdc++.h>
#define MAX 100000
using namespace std;
 
// global hash for prime
bool prime[100002];
 
// sieve method for storing a list of prime
void SieveOfEratosthenes()
{
    memset(prime, true, sizeof(prime));
 
    for (int p = 2; p * p <= MAX; p++)
        if (prime[p] == true)
            for (int i = p * 2; i <= MAX; i += p)
                prime[i] = false;
}
 
// function to return super power
int superpower(int n)
{
    SieveOfEratosthenes();
    int superPower = 0, factor = 0;
    int i = 2;
    // find the super power
    while (n > 1 && i <= MAX) {
        if (prime[i]) {
            factor = 0;
            while (n % i == 0 && n > 1) {
                factor++;
                n = n / i;
            }
 
            if (superPower < factor)
                superPower = factor;
        }
        i++;
    }
 
    return superPower;
}
 
// Driver program
int main()
{
    int n = 256;
    cout << superpower(n);
    return 0;
}

Java

// Java for finding super power of n
 
class GFG{
static int MAX=100000;
// global hash for prime
static boolean[] prime=new boolean[100002];
 
// sieve method for storing a list of prime
static void SieveOfEratosthenes()
{
 
    for (int p = 2; p * p <= MAX; p++)
        if (prime[p] == false)
            for (int i = p * 2; i <= MAX; i += p)
                prime[i] = true;
}
 
// function to return super power
static int superpower(int n)
{
    SieveOfEratosthenes();
    int superPower = 0, factor = 0;
    int i = 2;
    // find the super power
    while (n > 1 && i <= MAX) {
        if (!prime[i]) {
            factor = 0;
            while (n % i == 0 && n > 1) {
                factor++;
                n = n / i;
            }
 
            if (superPower < factor)
                superPower = factor;
        }
        i++;
    }
 
    return superPower;
}
 
// Driver program
public static void main(String[] args)
{
    int n = 256;
    System.out.println(superpower(n));
}
}
// This code is contributed by mits

Python3

# Python3 for finding super
# power of n
MAX = 100000;
 
# global hash for prime
prime = [True] * 100002;
 
# sieve method for storing
# a list of prime
def SieveOfEratosthenes():
 
    p = 2;
    while(p * p <= MAX):
        if (prime[p] == True):
            i = p * 2;
            while(i <= MAX):
                prime[i] = False;
                i += p;
        p += 1;
 
# function to return super power
def superpower(n):
 
    SieveOfEratosthenes();
    superPower = 0;
    factor = 0;
    i = 2;
     
    # find the super power
    while (n > 1 and i <= MAX):
        if (prime[i]):
            factor = 0;
            while (n % i == 0 and n > 1):
                factor += 1;
                n = int(n / i);
 
            if (superPower < factor):
                superPower = factor;
        i += 1;
 
    return superPower;
 
# Driver Code
n = 256;
print(superpower(n));
 
# This code is contributed by mits

C#

// C# for finding super power of n
 
class GFG
{
static int MAX = 100000;
 
// global hash for prime
static bool[] prime = new bool[100002];
 
// sieve method for storing
// a list of prime
static void SieveOfEratosthenes()
{
 
    for (int p = 2;
             p * p <= MAX; p++)
        if (prime[p] == false)
            for (int i = p * 2;
                     i <= MAX; i += p)
                prime[i] = true;
}
 
// function to return super power
static int superpower(int n)
{
    SieveOfEratosthenes();
    int superPower = 0, factor = 0;
    int i = 2;
     
    // find the super power
    while (n > 1 && i <= MAX)
    {
        if (!prime[i])
        {
            factor = 0;
            while (n % i == 0 && n > 1)
            {
                factor++;
                n = n / i;
            }
 
            if (superPower < factor)
                superPower = factor;
        }
        i++;
    }
 
    return superPower;
}
 
// Driver Code
static void Main()
{
    int n = 256;
    System.Console.WriteLine(superpower(n));
}
}
 
// This code is contributed by mits

PHP

<?php
// PHP for finding super power of n
$MAX = 100000;
 
// global hash for prime
$prime = array_fill(0, 100002, true);
 
// sieve method for storing
// a list of prime
function SieveOfEratosthenes()
{
    global $MAX, $prime;
 
    for ($p = 2; $p * $p <= $MAX; $p++)
        if ($prime[$p] == true)
            for ($i = $p * 2;
                 $i <= $MAX; $i += $p)
                $prime[$i] = false;
}
 
// function to return super power
function superpower($n)
{
    SieveOfEratosthenes();
    global $MAX, $prime;
    $superPower = 0;
    $factor = 0;
    $i = 2;
    // find the super power
    while ($n > 1 && $i <= $MAX)
    {
        if ($prime[$i])
        {
            $factor = 0;
            while ($n % $i == 0 && $n > 1)
            {
                $factor++;
                $n = $n / $i;
            }
 
            if ($superPower < $factor)
                $superPower = $factor;
        }
        $i++;
    }
 
    return $superPower;
}
 
// Driver Code
$n = 256;
echo superpower($n);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// Javascript for finding super power of n
var MAX = 100000;
 
// global hash for prime
var prime = Array(100002).fill(true);
 
// sieve method for storing a list of prime
function SieveOfEratosthenes()
{
    for (var p = 2; p * p <= MAX; p++)
        if (prime[p] == true)
            for (var i = p * 2; i <= MAX; i += p)
                prime[i] = false;
}
 
// function to return super power
function superpower(n)
{
    SieveOfEratosthenes();
    var superPower = 0, factor = 0;
    var i = 2;
    // find the super power
    while (n > 1 && i <= MAX) {
        if (prime[i]) {
            factor = 0;
            while (n % i == 0 && n > 1) {
                factor++;
                n = n / i;
            }
 
            if (superPower < factor)
                superPower = factor;
        }
        i++;
    }
 
    return superPower;
}
 
// Driver program
var n = 256;
document.write( superpower(n));
 
</script>
Producción: 

8

 

Publicación traducida automáticamente

Artículo escrito por Shivam.Pradhan 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 *