IsPrimePowerInt( n )
IsPrimePowerInt
returns true
if the integer n is a prime power and
false
otherwise.
n is a prime power if there exists a prime p and a positive integer i such that p^i = n. If n is negative the condition is that there must exist a negative prime p and an odd positive integer i such that p^i = n. 1 and -1 are not prime powers.
Note that IsPrimePowerInt
uses SmallestRootInt
(see
SmallestRootInt) and a probable-primality test (see IsPrimeInt).
gap> IsPrimePowerInt( 31^5 ); true gap> IsPrimePowerInt( 2^31-1 ); true # $2^{31}-1$ is actually a prime gap> IsPrimePowerInt( 2^63-1 ); false gap> Filtered( [-10..10], IsPrimePowerInt ); [ -8, -7, -5, -3, -2, 2, 3, 4, 5, 7, 8, 9 ]
GAP 3.4.4