验证 JavaScript 中的幂


在这个问题中,我们需要验证给定的数字是否为 n 的幂。如果给定的数字是 n 的幂,则应返回其真值,否则应返回假。

为了检查这种验证,我们通常使用算术运算符,如模运算 - %、除法 - /,以及比较运算符,如小于 < 或大于 >。

让我们用一个例子来理解这个问题。

True value: 

N = 27 
So 33 = 27 

False Value:
N = 28
So 33 != 28 

在上面的例子中,当 N = 27 时,该值是 3 的幂,它将返回真。但是当 N = 28 时,这里 N 不是 3 的幂,在这种情况下它将返回假。

在数学中,3 的幂是指 3 的 n 次幂的形式,其中 n 是一个整数——以数字 3 为底、整数 n 为指数的幂运算的结果。

算法

下面提到的算法将提供一个逐步解决给定问题的过程,以解决此问题。

例如,如果我们给定一个数字 243,那么我们必须检查它是否为 3 的幂,其精确算法如下

步骤 1:声明一个名为 isPowerOf3 的函数。此函数以 num 作为参数,如果 num 是 3 的幂则返回 true,否则返回 false。

步骤 2:然后首先检查 num 是否小于 1,在这种情况下它将不是 3 的幂。

步骤 3:然后检查如果 num 大于或等于 1,则持续地将 num 除以 3,只要 num 可被 3 整除。

步骤 4:如果 num 变成等于 1,则它是 3 的幂,并且函数返回 true 值。如果给定的 num 不是 3 的幂,则在循环之后它将变得小于 1 或不等于 1,在这种情况下函数返回 false。

步骤 5:在下一步中,我们将定义一个名为 number 的变量并在其中赋值。

步骤 6:然后使用 number 变量作为参数调用 isPowerOf3 函数,并在控制台中打印一条消息,说明输入数字是否为 3 的幂。

流程图

示例

// define a function to check power of 3

function isPowerOf3(num) {
  if (num & 1) {
   return false;
  }
  while (num % 3 === 0) {
   num /= 3;
  }
  return num === 1;
}

// number declaration

var number = 243;

// Check the given number is power of 3

if (isPowerOf3(number)) {
  console.log(`${number} is a power of 3`);
} else {
  console.log(`${number} is not a power of 3`);
}

输出

243 is a power of 3

在上面的代码中,我们声明了一个名为 isPowerOf3() 的函数,它接受一个名为 num 的参数。并且此函数将检查该数字是否为三的幂。因此,基本上我们使用了算术和比较运算符来解决此问题。

在此程序中,您还可以从用户那里获取输入并检查它返回真或假。在 javascript 中,我们通常使用 prompt() 获取输入。

复杂度

此程序的时间复杂度为 O(log3 n),其中 n 为数字。这是因为 isPowerOf3 函数持续地将 num 参数除以 3,直到它小于 1 或不能被 3 整除。每次循环执行时,num 都除以 3,这有效地将它的值除以 3。由于循环持续到 num 小于 1 或不能被 3 整除,因此循环执行的次数与 num 的以 3 为底的对数成正比。因此,程序的时间复杂度为 O(log3 n)。

因此,此程序的空间复杂度为 O(1),因为它仅使用恒定的内存量来存储数字、循环计数器和 isPowerOf3 方法的值。

结论

这是解决此类问题的基本思路。在整个过程中,我们使用了名为 isPowerOf3 的函数、算术运算符和比较运算符来解决问题。并了解了如何计算算法的时间和空间复杂度。

更新于: 2023年8月18日

113 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.