# Check if the number is a Prime power number

Given an integer **N**, the task is to check if the number is a Prime power number. If yes, then print the number along with its power which is equal to N. Else print -1.

A prime power is a positive integer power of a single prime number.

For example: 7 = 7^{1}, 9 = 3^{2}and 32 = 2^{5}are prime powers, while 6 = 2 × 3, 12 = 22 × 3 and 36 = 62 = 22 × 32 are not. (The number 1 is not counted as a prime power.)

**Note:** If there are no such prime number, print -1.

**Examples:**

Input:N = 49

Output:7^{2}

Explanation:

N can be represented as a power of prime number 7.

N = 49 = 7^{2}

Input:N = 100

Output:-1

Explanation:

N cannot be represented as a power of any prime number.

**Approach:** The idea is use Seive of Eratosthenes to find all the prime number. Then, Iterate over all the prime numbers and check that if any prime number divides the given number N, if yes then divide it until it becomes 1 or not divisible by that prime number. Finally, check that the number is equal to 1, If yes then return prime number otherwise given number cannot be expressed as a prime number raised to some power.

Below is the implementation of the above approach:

## Python

`# Python implementation to check ` `# if a number is a prime power number ` ` ` `from` `math ` `import` `*` ` ` `# Array to store the ` `# prime numbers ` `is_prime ` `=` `[` `True` `for` `i ` `in` `range` `(` `10` `*` `*` `6` `+` `1` `)] ` `primes ` `=` `[] ` ` ` `# Function to mark the prime ` `# numbers using Seive of ` `# Eratosthenes ` `def` `SieveOfEratosthenes(n): ` ` ` `p ` `=` `2` ` ` `while` `(p ` `*` `p <` `=` `n): ` ` ` `# If prime[p] is not ` ` ` `# changed, then it is a prime ` ` ` `if` `(is_prime[p] ` `=` `=` `True` `): ` ` ` `# Update all multiples of p ` ` ` `for` `i ` `in` `range` `(p ` `*` `p, n ` `+` `1` `, p): ` ` ` `is_prime[i] ` `=` `False` ` ` `p ` `+` `=` `1` ` ` `for` `i ` `in` `range` `(` `2` `, n ` `+` `1` `): ` ` ` `if` `is_prime[i]: ` ` ` `primes.append(i) ` ` ` `# Function to check if the ` `# number can be represented ` `# as a power of prime ` `def` `power_of_prime(n): ` ` ` `for` `i ` `in` `primes: ` ` ` `if` `n ` `%` `i ` `=` `=` `0` `: ` ` ` `c ` `=` `0` ` ` `while` `n ` `%` `i ` `=` `=` `0` `: ` ` ` `n` `/` `/` `=` `i ` ` ` `c ` `+` `=` `1` ` ` `if` `n ` `=` `=` `1` `: ` ` ` `return` `(i, c) ` ` ` `else` `: ` ` ` `return` `(` `-` `1` `, ` `1` `) ` ` ` `# Driver Code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` `n ` `=` `49` ` ` `SieveOfEratosthenes(` `int` `(sqrt(n))` `+` `1` `) ` ` ` ` ` `# Function Call ` ` ` `num, power ` `=` `power_of_prime(n) ` ` ` `if` `num > ` `1` `: ` ` ` `print` `(num, ` `"^"` `, power) ` ` ` `else` `: ` ` ` `print` `(` `-` `1` `) ` |

*chevron_right*

*filter_none*

**Output:**

7 ^ 2

## Recommended Posts:

- Power of a prime number ‘r’ in n!
- Finding power of prime number p in n!
- Check if given number is a power of d where d is a power of 2
- Check if a number is divisible by all prime divisors of another number
- Check if a number is Prime, Semi-Prime or Composite for very large numbers
- Check if a number is a power of another number
- Check if a prime number can be expressed as sum of two Prime Numbers
- Check whether a given Number is Power-Isolated or not
- Given a HUGE number check if it's a power of two.
- Check if a number can be expressed as power | Set 2 (Using Log)
- Check if a number can be expressed as x^y (x raised to power y)
- Check if a number is power of k using base changing method
- Check if a number is Primorial Prime or not
- Check if N is a Balanced Prime number or not
- Check if a number is Quartan Prime or not

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.