Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I wanted to know how would I use Mathematica in order to check if the number is a perfect power I saw the algorithm but couldn't grasp it enough to implement it, so can anybody help?

share|improve this question
Well, you could just use FactorInteger, for example. – Leonid Shifrin Feb 13 '14 at 22:05
up vote 4 down vote accepted

The function below returns the power of n.

power[n_] := GCD @@ (FactorInteger[n][[All, 2]])



returns 4 because3111696=2^4*3^4*7^4

If you deal with very large numbers where FactorInteger simply can't help, you could use trial exponents IntegerQ[n^(1/m)] for m=2,3,4,.... Where to stop (I mean m) depends on the length of the number.

share|improve this answer

Inspired by tchronis's answer and Leonid's comment I came up with

powers[int_] := FactorInteger[int][[All, 2]]
perfectPowerQ[int_] := (GCD @@ powers[int] > 1)

powers tells you what powers the prime factors are raised to to get the required number while perfectPowerQ checks that all these powers are the same.

share|improve this answer
I think you have to use GCD as in @tchronis's answer (GCD@@[powers[int]]>1). Those factors do not have to be the same. For example, perfectPowerQ[144] gives False using your code. – Yi Wang Feb 14 '14 at 7:56
Oh, you are right. Sneaky. Edited that correction in. – evanb Feb 14 '14 at 19:29

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.