`
kmplayer
  • 浏览: 512302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

2.2 不要被阶乘吓到

阅读更多
1,问题一:
N的阶乘N!末尾有多少个0呢?

解答:问题可转化为N!的质因数分解中5的个数.
int ZeroNum(int n)
{
    int ret;
    //注:第一次循环表示5^1的倍数,每个贡献一个5
    //第二次表示5^2的倍数,也会额外多贡献一个5
    //...一次类推
    while (n)
    {
        n /= 5;
        ret += n;
    }
	return ret;
}

2,问题2:
求N!的二进制表示中的最低位1的位置.

解答:问题转化为求质因数分解中1的个数.

方法1同上:
int lowestOne(int N)
{
    int ret;
    while(N)
    {
        N >>= 1;
        ret += N;
    }
    return ret;
}

方法2(结合方法1其实很好理解)
N!中含有的质因数2的个数,就等于N减去N的二进制表示中1的数目.

3,拓展
给定整数n,判断它是否为2的方幂.
问题转化:判断二进制表示中1的个数是否==1.
return ((n > 0) && ((n & (n-1)) == 0));
分享到:
评论

相关推荐

    java阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘

    java阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘阶乘

    1到n的阶乘求和

    阶乘求和是一个在计算机科学和数学中常见的问题,它涉及到序列的计算和求和。在本问题中,我们关注的是从1到n的所有整数的阶乘的总和。阶乘是一个数与小于等于它的所有正整数的乘积,表示为n!。例如,5! = 5 × 4 ×...

    c语言1到20阶乘

    c语言1到20阶乘

    java中的1到20的阶乘

    ### Java中的1到20的阶乘 在Java编程语言中,实现1到20的阶乘是一个典型的编程练习,可以帮助初学者理解循环结构、变量声明以及简单的数学运算。本篇文章将详细介绍如何在Java中计算1到20的阶乘,并深入探讨其中...

    阶乘运算的源码

    循环变量`i`从1到`n`,在每次迭代中,`sum`的值被更新为当前`sum`值与`i`的乘积。循环结束后,`sum`即为`n`的阶乘。 ##### 2.3 递归实现阶乘 ```java public static int recursiveFactorial(int n) { int sum = 1...

    阶乘计算 大数阶乘 大整数阶乘 用数组计算阶乘

    阶乘 阶乘计算 大数阶乘 大整数阶乘 用数组计算阶乘

    n的阶乘问题--阶乘位数--阶乘末尾0的个数

    在编程领域,阶乘是一个常见的数学概念,尤其在算法和计算数学中经常被用到。本文将深入探讨“n的阶乘问题”,包括阶乘的定义、计算阶乘位数的方法以及如何确定阶乘末尾零的个数。 首先,阶乘是指一个正整数n与小于...

    阶乘算法 阶乘问题 C# 小程序

    阶乘算法是计算一个正整数n的所有小于等于n的正整数的乘积的数学概念,表示为n!。在计算机科学中,阶乘算法经常用于解决各种问题,如组合数学、排列组合以及概率计算等领域。C#是一种常用的编程语言,它提供了多种...

    基于MFC的简易计算阶乘的小程序

    **基于MFC的简易计算阶乘的小程序** MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于简化Windows应用程序的开发。在这个基于MFC的小程序中,我们专注于实现一个计算整数阶乘的功能。阶乘是数学...

    java程序关于计算1到20 的阶乘的和

    此java程序时计算1到20 的阶乘的和,即1!+2+3!+4!+5!+6!+7!.......19!+20! 如果你稍微改下就可以只算阶乘!

    阶乘求和1到10

    阶乘求和1到10.html

    巧算100万阶乘

    i--)`:遍历从m到1的所有整数,并依次计算阶乘。 - 内部嵌套的`while`循环用于计算当前乘积`number`的位数,并更新`count`变量。 - **对数处理**:通过除以10的方式来计算`number`的位数,以此来间接处理大数问题...

    c语言 10的阶乘

    这个程序将计算出10的阶乘,并将其值输出到控制台。 需要注意的是,由于阶乘的增长非常快,10的阶乘(即10!)是一个很大的数,超过了一般整型变量的范围。因此,这里我们使用了`long long`类型来存储阶乘的结果,以...

    求阶乘-c#编写的求阶乘的程序

    总的来说,"求阶乘-c#编写的求阶乘的程序"是一个很好的学习资源,它可以帮助初学者巩固基础,锻炼逻辑思维,同时也能让他们接触到递归这种高级编程技术。通过编写和运行这样的程序,不仅可以学习到C#语言,还能提升...

    JAVA求N的阶乘

    阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。 一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,...

    用C语言计算20的阶乘

    C语言是一种通用的编程语言,具有高效性和灵活性,被广泛应用于系统开发、嵌入式系统等领域。它支持函数、数组、指针等特性,能够直接访问内存地址,因此非常适合进行高性能计算任务,包括数学计算如阶乘的求解。 #...

    n的阶乘末尾有多少个0_n的阶乘末尾的0_

    在编程领域,我们经常遇到计算一个大数的阶乘的问题,比如找到整数n的阶乘(n!)。然而,当n变得非常大时,直接计算阶乘可能会导致整数溢出,因为n!的增长速度非常快。为了解决这个问题,我们可以关注阶乘末尾的零个...

    大数阶乘 双向链表

    - 将结果更新到新的链表中,即大数阶乘的结果链表。 4. **遍历输入数字**:从1开始,逐步将每个数字与当前的阶乘结果相乘。每次乘法都使用上述的链表乘法算法。 5. **处理负数和溢出**:输入的数可以是负数或超出...

    VB 递归求阶乘

    需要注意的是,递归虽然简洁优雅,但效率并不高,因为它涉及到多次函数调用,会消耗较多的系统资源。此外,对于较大的n值,递归可能会导致栈溢出错误。因此,在实际应用中,可以考虑使用循环等其他方法来优化阶乘的...

Global site tag (gtag.js) - Google Analytics