題目
A perfect power is a classification of positive integers:
In mathematics, a perfect power is a positive integer that can be expressed as an integer power of another positive integer. More formally, n is a perfect power if there exist natural numbers m > 1, and k > 1 such that mk = n.
Your task is to check wheter a given integer is a perfect power. If it is a perfect power, return a pair m
and k
with mk = n as a proof. Otherwise return Nothing
, Nil
, null
, NULL
, None
or your language's equivalent.
Note: For a perfect power, there might be several pairs. For example 81 = 3^4 = 9^2
, so (3,4)
and (9,2)
are valid solutions. However, the tests take care of this, so if a number is a perfect power, return any pair that proves it.
Examples
isPP(4) => [2,2]
isPP(9) => [3,2]
isPP(5) => None
我的答案
import math
def isPP(n):
for m in range(2, int(math.sqrt(n))+1):
k = int(round(math.log(n, m)))
if m ** k == n:
return [m, k]
return None
- 慎用pow(a, b)函數(shù)進行開方運算,python3實測因為1/3(或1.0/3) = 0.3333333333333333袱衷,所以pow(216, 1/3) 和pow(216, 1.0/3)運行結(jié)果均為5.999999999999999术吝,pow(216, 1/3) .is_integer()返回False。