`
steven-zhou
  • 浏览: 212321 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

如果快速判断一个正整数是否为2的幂次方

阅读更多
给定一个正整数(N <= 2^32),要求快速判断它是否为2的幂次方。(不可用循环)
通常我们知道:
       十进制         二进制
2^0 == 1              0000 0001
2^1 == 2              0000 0010
2^2 == 4              0000 0100
2^3 == 8              0000 1000
2^4 == 16             0001 0000
2^5 == 32             0010 0000
从上述规律中我们可以得出,题目最终归结为判断此数的二进制表示(unsigned)中是否只有一位为1。

不用循环判断的算法如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    unsigned int n = atoi(argv[1]);

    if (n >= 1) {
        if (n & (n - 1))
            printf("%d: no\n", n);
        else
            printf("%d: yes\n", n);
    }
    exit(EXIT_SUCCESS);
}

2
0
分享到:
评论

相关推荐

    判断是否为2的N次方

    在这个测试程序中,我们定义了一个包含不同数值的数组`test_values`,然后遍历数组中的每个元素,用`IS_POWER_OF_TWO`宏判断其是否为2的幂次方,并输出结果。运行此程序,我们可以验证宏的正确性。 总结一下,判断...

    如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?

    在计算机科学中,判断一个数是否为4的幂次方是一项常见的数学操作,尤其是在处理二进制表示的数值时。4的幂次方可以写成2的幂次方的平方,例如4^2 = 2^4,4^3 = 2^6,4^4 = 2^8,以此类推。这种性质在二进制表示中...

    初等数论中判断一个整数m是否存在原根程序

    原根是指在模一个正整数m下的一个整数g,使得所有不大于m且与m互质的整数a都能表示为g的幂的形式,即存在k使得a ≡ g^k (mod m)。原根的存在性与m的性质紧密相关。 首先,我们来理解一下如何判断一个整数m是否存在...

    Leetcode 326:3的幂

    在这个代码中,我们定义了一个名为 `isPowerOfThree` 的函数,它接受一个整数 `n` 作为参数,并返回一个布尔值表示 `n` 是否是3的幂次方。在 `main` 函数中,我们获取用户输入的整数,并调用 `isPowerOfThree` 函数...

    算法-欧拉定理(洛谷-P5091)(十进制快速幂实现)(包含源程序).rar

    欧拉定理表述如下:如果a和n是正整数,且它们互为质数(即最大公约数为1),那么a的φ(n)次方除以n的余数等于1,其中φ(n)是欧拉函数,表示小于或等于n的正整数中与n互质的数的数量。欧拉定理可以用来简化模指数运算...

    判断水仙花数的算法

    水仙花数是指一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个三位数,而1^3 + 5^3 + 3^3 = 153,因此153是水仙花数。 给定的代码片段提供了一种基础的方法来判断一个输入的整数...

    php-leetcode题解之2的幂.zip

    - **按位或(|)**:如果两个相应的位中至少有一个为1,则结果的相应位为1,否则为0。 - **按位异或(^)**:如果两个相应的位不同,则结果的相应位为1,否则为0。 2. **判断2的幂的算法**: - **方法1:位运算**:...

    2指数与指数幂的运算分数指数幂导学案.docx

    在传统的整数指数幂中,指数必须是正整数,但在分数指数幂中,指数可以是分数形式,如 `m/n`,其中 `m` 和 `n` 是正整数。对于分数指数幂 `am/n`,它等价于 `^(m/n)a`,即 `a` 的 `m` 次方根再自乘 `n` 次。例如,`2...

    素数的判断

    "素数的判断"这个主题主要涉及如何通过编程来确定一个给定的正整数是否为素数。在描述中提到了"用MIller-Rabin素判定法则",这是一种高效的概率性测试方法,用于判断一个大整数是否为素数。该算法由Melvin Rabin和...

    Python入门程序 函数应用(判断素数、递归求n的阶乘、x的n次方、最大最小值、插入排序法)

    判断一个数是否为素数是编程中常见的数学问题。在给定的代码中,`isprime`函数通过检查从2到n-1的所有数字,看是否存在能整除n的数。如果找到这样的数,那么n不是素数,返回False;反之,如果遍历完成后没有找到能...

    指数与指数幂的运算PPTPPT学习教案.pptx

    例如,如果有一个数a,它的n次幂表示为an,意味着a自乘n次。在题目中的第一个问题,讨论了我国GDP年平均增长率的问题,利用指数增长的原理,可以计算未来20年内GDP相对于2000年的倍数。 其次,指数幂的运算涉及到...

    2015春七年级数学下册 8.1 幂的运算《幂的乘方与积的乘方》教案2 (新版)沪科版

    在巩固新知环节,学生需要判断并改正计算题中的错误,例如(8^4)*(ab)^4是否正确,以及2^(2^3) - q^(3^2)是否可以简化为2^6 - q^9。 总的来说,这个教案旨在通过情境设置、自主探索、典型例题和知识巩固等步骤,使...

    211指数与指数幂的运算PPTPPT教学课件.pptx

    当指数n为奇数时,正数的n次方根是正的,负数的n次方根是负的,且只有一个。而当n为偶数时,正数有两个互为相反的n次方根,负数没有偶次方根,0的任何次方根都是0。 此外,课件探讨了根号下的表达式为负数时的情况...

    专题讲座2021-2022年幂运算与幂函数.doc

    n次方根是幂运算的逆运算,当n为偶数时,正数的n次方根有两个,分别是正的和负的;负数的n次方根只存在于复数域。而当n为奇数时,正数和负数都有唯一一个实数n次方根。对于0的n次方根,无论n是奇数还是偶数,结果都...

    七年级数学上乘方PPT课件.pptx

    例如,根据负数的奇次幂为负,偶次幂为正,我们可以快速确定一个负数的幂的符号。 此外,乘方运算还有助于解决更复杂的问题,比如附加题中涉及的2n的次方。如果n是正整数,那么2n也是正整数,因此2^n×2^n=2^(2n),...

    求素数的新方法

    在本文中,我们将探讨一种高效求解素数的新方法,以及两个相关的辅助算法,用于判断一个数是否为2的幂次方,以及计算一个数的二进制表示中1的个数。 首先,让我们看看高效求解素数的方法。传统的素数求解方法,如...

    acm算法经典例题.doc

    因此,对于任意正整数b,只需要计算b对4取模的值,然后根据这个模值对应的幂次方末尾数字即可得出结果。 综上所述,解决ACM算法题需要结合数论知识、数学规律和高效的编程技巧。这两个问题展示了如何运用这些知识来...

    素数检测算法

    素数检测算法是用来判断一个给定的正整数是否为素数的方法。在数学和计算机科学中,有许多不同的素数检测算法,它们的效率和应用场景各不相同。常见的素数检测算法有:试除法、费马小定理检验法、米勒-拉宾素性检验...

    Dowhile循环练习

    其中,`condition` 是一个布尔表达式,用于判断循环是否应该继续执行。`Do While` 和 `Do Until` 可以互换使用,区别在于 `While` 后面的条件为真时继续循环,而 `Until` 后面的条件为假时继续循环。 ### 3. Do...

    指数函数、对数函数.pdf

    通过例子和变式训练,我们学习了如何判断一个函数是否为指数函数,比较指数的大小,以及求解指数不等式。例如,比较\(1.7^{2.5}\)和\(1.7^3\),可以发现由于底数相同,指数越大,值越大,因此\(1.7^{2.5} ^3\)。 ...

Global site tag (gtag.js) - Google Analytics