关闭

读书笔记-数论

标签: 编程之美读书笔记
54人阅读 评论(0) 收藏 举报
分类:

离散数学之数论

翻了翻课本,看到数论一章有一个问题:20!的二进制表示从最低位数起有多少个连续的 0 。
课本上直接求 1到20的数 含有因子2的个数和,求出来是 18. 各种不理解,然后百度。看到了《编程之美》一书有同样的问题。
以下内容部分摘自: 大神的读书笔记

有两个问题,用到的方法类似

(1)给定一个整数N,那么N的阶乘N!末尾有多少个0?比如:N=10,N!=3628800,N!的末尾有2个0。
(2)求N!的二进制表示中最低位为1的位置。(这个的意思就是求出多少个连续的0 加一 就是位置)

主要分析第二个问题。当时很不理解 为什么要求7!的质因数分解后 2 的个数。
奇数的二进制表示末尾都是 1,奇数*奇数=奇数。我们可以这样想,1-7的奇数全部相乘,再乘偶数,每乘一个偶数,就会多k(取决质因子2的个数)个0 对 7! 进行质因数分解就可以了。
书上也用到了一个很巧妙的方法:

N!中含有质因数2的个数等于:[N/2]+[N/4]+[N/8]+…

自行理解~

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:408次
    • 积分:42
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档