Find the super power of a given Number
Given an integer . The task is to find the superpower from the factorization of
.
The Superpower is the highest power among the power of primes in the factorisation of a number n.
Examples:
Input : n = 32 Output : 5 Input : n = 240 Output : 4
For finding the superpower of any given number , we have to complete the factorisation of n, and find out highest power among all of the prime factors.
Note: Using Sieve for the purpose of storing list of primes is useful in terms of optimization.
Algorithm :
- Itereate over primes and calculate the factorization of n.
- For each prime among the stored list of primes and which is also a factor of n,
find its power and check it for super power.
Below is the implementation of the above approach:
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 ?> |
8
Recommended Posts:
- Find whether a given number is a power of 4 or not
- Find last five digits of a given five digit number raised to power five
- Find maximum power of a number that divides a factorial
- Find power of power under mod of a prime
- Check if given number is a power of d where d is a power of 2
- Highest power of a number that divides other number
- Program to find whether a no is power of two
- Find value of y mod (2 raised to power x)
- Find whether a given integer is a power of 3 or not
- Given two numbers as strings, find if one is a power of other
- Find unit digit of x raised to power y
- Find multiple of x closest to or a ^ b (a raised to power b)
- Sum of digits of a given number to a given power
- Power of a prime number ‘r’ in n!
- Check if a number is a power of another number
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : Mithun Kumar