一个完美的功率为正整数的分类:
在数学中,完美的电源是可被表示为另一个正整数的整数次幂的正整数。更正式地说,n是一个完美的功率,如果存在自然数m> 1,并且k> 1,使得米? = N。
你的任务是检查wheter一个给定的整数是一个完美的动力。如果它是一个完美的电源,返回一对m
和k
具有m ? = N作为证明。否则返回Nothing
,Nil
,null
,None
或者你的语言的等价物。
注:对于一个完美的动力,可能有几双。例如81 = 3^4 = 9^2
,所以(3,4)
和(9,2)
有效的解决方案。然而,测试照顾这一点,所以如果一个数字是一个完美的电源,返回任何一对证明了这一点。
例子
Test.describe("perfect powers", function(){
Test.it("should work for some examples",function(){
Test.assertSimilar(isPP(4), [2,2], "4 = 2^2");
Test.assertSimilar(isPP(9), [3,2], "9 = 3^2");
Test.assertEquals( isPP(5), null, "5 isn‘t a perfect number");
});
});
题目如上,以下是查看到的答案(本人未完成):
function isPP(n) {
for (var m = 2; m * m <= n; m++)
for (var k = 2; Math.pow(m, k) <= n; k++)
if (Math.pow(m, k) == n) return [m, k];
return null;
}
这位同学使用双重遍历的方式将数据从小到大拆分。先得到用户相乘的数值,这个数值的平方一定是小于N(要求的数值),然后在下一层的便利将幂数的范围确定,使用Math.pow(m,k)确定最大值,然后进行判断即可。
时间: 2024-10-10 16:02:36