热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

检查给定的数字是否是d的幂,其中d是2的幂

检查给定的数字是否是d的幂,其中d是2的幂原文:ht

检查给定的数字是否是 d 的幂,其中 d 是 2 的幂

原文:https://www . geesforgeks . org/check-给定-number-power-d-d-power-2/

给定一个整数 n,求它是否是 d 的幂,其中 d 本身就是 2 的幂。
例:

Input : n = 256, d = 16
Output : Yes
Input : n = 32, d = 16
Output : No

方法 1 取给定数在基数 d 上的对数,如果得到一个整数,那么这个数就是 d 的幂。
方法 2 继续将这个数除以 d,即迭代做 n = n/d。在任何迭代中,如果 n%d 变成非零且 n 不是 1,则 n 不是 d 的幂,否则 n 是 d 的幂。
方法 3(按位)
如果满足以下条件,则数字 n 是 d 的幂。
a)在 n 的二进制表示中只有一个位集(注意:d 是 2 的幂)
b)在(唯一)设置位之前的零位计数是 log 的倍数 2 (d)。
例如:对于 n = 16 (10000)和 d = 4,16 是 4 的幂,因为只有一个位设置,并且在设置位是 4 之前计数为 0,4 是 log 的倍数 2 (4)。

C++


// CPP program to find if a number is power
// of d where d is power of 2.
#include<stdio.h>
unsigned int Log2n(unsigned int n)
{
return (n > 1)? 1 + Log2n(n/2): 0;
}
bool isPowerOfd(unsigned int n, unsigned int d)
{
int count = 0;
/* Check if there is only one bit set in n*/
if (n && !(n&(n-1)) )
{
    /* count 0 bits before set bit */
    while (n > 1)
    {
    n >>= 1;
    count += 1;
    }    
    /* If count is a multiple of log2(d)
    then return true else false*/
    return (count%(Log2n(d)) == 0);
}
/* If there are more than 1 bit set
    then n is not a power of 4*/
return false;
}
/* Driver program to test above function*/
int main()
{
int n = 64, d = 8;
if (isPowerOfd(n, d))
    printf("%d is a power of %d", n, d);
else
    printf("%d is not a power of %d", n, d);
return 0;
}


Java 语言(一种计算机语言,尤用于创建网站)


// Java program to find if
// a number is power of d
// where d is power of 2.
class GFG
{
static int Log2n(int n)
{
    return (n > 1)? 1 +
    Log2n(n / 2): 0;
}
static boolean isPowerOfd(int n,
                        int d)
{
int count = 0;
/* Check if there is
only one bit set in n*/
if (n > 0 && (n &
(n - 1)) == 0)
{
    /* count 0 bits
    before set bit */
    while (n > 1)
    {
        n >>= 1;
        count += 1;
    }
    /* If count is a multiple
    of log2(d) then return
    true else false*/
    return (count %
        (Log2n(d)) == 0);
}
/* If there are more
than 1 bit set then
n is not a power of 4*/
return false;
}
// Driver Code
public static void main(String[] args)
{
    int n = 64, d = 8;
    if (isPowerOfd(n, d))
        System.out.println(n +
                    " is a power of " + d);
    else
        System.out.println(n +
                    " is not a power of " + d);
}
}
// This code is contributed by mits


Python 3


# Python3 program to find if a number
# is power of d where d is power of 2.
def Log2n(n):
    return (1 + Log2n(n / 2)) if (n > 1) else 0;
def isPowerOfd(n, d):
    count = 0;
    # Check if there is only
    # one bit set in n
    if (n and (n & (n - 1))==0):
        # count 0 bits
        # before set bit
        while (n > 1):
            n >>= 1;
            count += 1;
        # If count is a multiple of log2(d)
        # then return true else false
        return (count%(Log2n(d)) == 0);
    # If there are more than 1 bit set
    # then n is not a power of 4
    return False;
# Driver Code
n = 64;
d = 8;
if (isPowerOfd(n, d)):
    print(n,"is a power of",d);
else:
    print(n,"is not a power of",d);
# This code is contributed by mits


C


// C# program to find if
// a number is power of d
// where d is power of 2.
using System;
class GFG
{
static int Log2n(int n)
{
    return (n > 1)? 1 +
    Log2n(n / 2): 0;
}
static bool isPowerOfd(int n,
                    int d)
{
int count = 0;
/* Check if there is
only one bit set in n*/
if (n > 0 && (n & (n - 1)) == 0)
{
    /* count 0 bits
    before set bit */
    while (n > 1)
    {
    n >>= 1;
    count += 1;
    }
    /* If count is a multiple
    of log2(d) then return
    true else false*/
    return (count % (Log2n(d)) == 0);
}
/* If there are more than
1 bit set then n is not
a power of 4*/
return false;
}
// Driver Code
static void Main()
{
int n = 64, d = 8;
if (isPowerOfd(n, d))
    Console.WriteLine("{0} is a " +
                    "power of {1}",
                            n, d);
else
    Console.WriteLine("{0} is not a"+
                    " power of {1}",
                            n, d);
}
// This code is contributed by mits
}


服务器端编程语言(Professional Hypertext Preprocessor 的缩写)



// PHP program to find if a number
// is power of d where d is power of 2.
function Log2n($n)
{
    return ($n > 1)? 1 +
    Log2n($n / 2): 0;
}
function isPowerOfd($n, $d)
{
    $count = 0;
// Check if there is only
// one bit set in n
if ($n && !($n & ($n - 1)))
{
    // count 0 bits
    // before set bit
    while ($n > 1)
    {
        $n >>= 1;
        $count += 1;
    }
    /* If count is a multiple of log2(d)
    then return true else false*/
    return ($count%(Log2n($d)) == 0);
}
    /* If there are more than 1 bit set
    then n is not a power of 4*/
    return false;
}
// Driver Code
$n = 64;
$d = 8;
if (isPowerOfd($n, $d))
    echo $n," ","is a power of ", $d;
else
    echo $n," ","is not a power of ", $d;
// This code is contributed by m_kit
?>


java 描述语言


<script>
// Javascript program to find if
// a number is power of d
// where d is power of 2
function Log2n(n)
{
    return (n > 1) ? 1 +
      Log2n(n / 2) : 0;
}
// Function to count the number
// of ways to paint  N * 3 grid
// based on given conditions
function isPowerOfd(n, d)
{
    var count = 0;
    /* Check if there is
    only one bit set in n*/
    if (n > 0 && (n & (n - 1)) == 0)
    {
        /* count 0 bits
        before set bit */
        while (n > 1)
        {
            n >>= 1;
            count += 1;
        }
        /* If count is a multiple
        of log2(d) then return
        true else false*/
        return (count % (Log2n(d)) == 0);
    }
    /* If there are more
    than 1 bit set then
    n is not a power of 4*/
    return false;
}
// Driver code
var n = 64, d = 8;
if (isPowerOfd(n, d))
    document.write(n +
                " is a power of " + d);
else
    document.write(n +
                " is not a power of " + d);
// This code is contributed by Khushboogoyal499
script>

Output: 

64 is a power of 8

时间复杂度: O(log 2 n)

辅助空间: O(1)


推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
author-avatar
夕阳的春天8989_110
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有