
毕业于电子科技大学。高级程序员、某软件公司的技术总监。擅长C和C++语言,对数据结构和算法有深入的研究。长期从事行业软件设计和团队管理工作,已十年有余。有着丰富的IT架构设计经验和行业咨询经验。负责过多个大型软件项目的开发工作。
本书是一本专门为程序员而写的数学书,介绍了程序设计中常用的数学知识。本书门槛不高,不需要读者精通很多高深的数学知识,只需要读者具备基本的四则运算、乘方等数学基础知识和日常生活中的基本逻辑判断能力即可。本书拒绝枯燥乏味的讲解,而是代之以轻松活泼的风格。书中列举了大量读者都很熟悉,而且非常有趣的数学实例,并结合程序设计的思维和算法加以剖析,可以训练读者的数学思维能力和程序设计能力,进而拓宽读者的视野,增强职场竞争力。本书共11章,分别介绍了数据的表示、神奇的素数、递归、排列组合、用余数进行数据分组、概率、复利、数理逻辑、推理、几何图形构造、统筹规划等程序设计中常用的数学知识,从而引导读者深入理解编程中的数学方法和思路。本书包含的实例有结绳记事、孪生素数、梅森素数、哥德巴赫猜想、阶乘、汉诺塔、斐波那契数列、乘法原理、加法原理、字符编码、密码长度、日历中的数学、心灵感应魔术、约瑟夫环、智叟分牛、百枚钱币鼓士气、庄家的胜率、中奖概率、用概率方法求π值、复利的威力、对折纸张、舍罕王的赏赐、三段论、选言推理、假言推理、关系推理、花盆摆放、残缺棋盘、丢失的线条、田忌赛马、背包问题等。本书适合广大程序设计人员及数学爱好者阅读,尤其适合有一定程序设计经验,但还需要进一步加深对程序设计理解的人员阅读。本书对IT求职人员、信息学竞赛和大学生程序设计竞赛等参赛学员也有很好的参考价值。
第1章 数据的表示1.1 一则童话1.1.1 0和1的故事1.1.2 0是什么都没有?1.1.3 0的位置1.1.4 程序中的1.2 司空见惯的十进制数1.2.1 远古的结绳记事1.2.2 什么是十进制计数1.2.3 为啥人类习惯十进制1.2.4 十进制运算规则1.2.5 十进制数的分解1.2.6 20!等于多少1.2.7 大整数构想1.3 为啥要用二进制1.3.1 人脑与电脑1.3.2 二进制计数规则1.3.3 简单的二进制运算规则1.3.4 二进制数的分解1.3.5 十进制数转换为二进制数1.4 还有哪些进制1.4.1 神奇的八卦:八进制1.4.2 钟表使用的十二进制1.4.3 半斤八两:十六进制1.4.4 60年一个甲子:六十进制1.4.5 各种进制之间的转换1.4.6 二进制与八进制、十六进制的转换第2章 神奇的素数2.1 怎么判断素数2.1.1 什么是素数2.1.2 验证素数2.1.3 寻找素数的算法2.1.4 已被证明的素数定理2.2 孪生素数2.2.1 什么是孪生素数2.2.2 孪生素数的公式2.2.3 中国剩余定理2.2.4 孪生素数分布情况2.3 使用素数的RSA算法2.3.1 什么是RSA2.3.2 RSA算法基础2.3.3 RSA算法实践2.3.4 RSA应用:数字签名2.3.5 RSA被破解的可能性2.4 哥德巴赫猜想2.4.1 哥德巴赫猜想是什么2.4.2 数值验证2.5 梅森素数2.5.1 什么是梅森素数2.5.2 已知的梅森素数列表第3章 递归——自己调用自己3.1 从前有座山,山里有座庙3.1.1 老和尚讲的故事3.1.2 德罗斯特效应3.1.3 什么是递归3.1.4 用递归能解决哪些问题3.1.5 一个简单例子:求最大公约数3.2 用递归计算阶乘3.2.1 阶乘该怎么计算3.2.2 阶乘的递归计算方法3.2.3 递归的过程3.2.4 递归的本质:缩小问题规模3.3 汉诺塔3.3.1 古老的传说3.3.2 从两个盘考虑3.3.3 找出递归结构3.3.4 实现程序3.3.5 究竟需要移动多少次3.4 斐波那契数列3.4.1 兔子的家族3.4.2 从最初几月数据中找规律3.4.3 斐波那契数列3.4.4 神奇的魔八方第4章 排列组合——让数选边站队4.1 把所有情况都列出来4.1.1 从0还是1开始4.1.2 赛程安排4.2 乘法原理4.2.1 行程安排的问题4.2.2 乘法原理适用条件4.2.3 棋盘上棋子的放法4.2.4 买彩票保证中奖的方法4.3 加法原理4.3.1 仍然是行程问题4.3.2 总结出的加法原理4.3.3 骰子出现偶数的次数4.4 排列与组合的关系4.4.1 排列4.4.2 组合4.4.3 排列与组合的联系4.4.4 可重排列4.5 计算机中的字符编码4.5.1 ASCII码能表示的字符数量4.5.2 能表示更大范围的编码4.6 密码的长度4.6.1 容易破解的密码4.6.2 多长的密码才安全4.6.3 密码中使用的字符数量也很关键第5章 余数——数据分组5.1 复习小学的余数5.1.1 自然数的余数5.1.2 余数的性质5.1.3 用余数进行分组5.2 日历中的数学5.2.1 n天后是星期几5.2.2 下月的今天是星期几5.2.3 10年后的“今天”是星期几5.3 心灵感应魔术5.3.1 一个小魔术5.3.2 魔术师是怎么猜出来的5.4 奇偶校验5.4.1 不可靠的网络传输5.4.2 用奇偶校验检查错误5.5 吕洞宾不能坐首位5.5.1 座位安排5.5.2 试排座位找规律5.5.3 西方的约瑟夫环5.5.4 用数学方法解约瑟夫环5.6 智叟分牛5.6.1 遗产分配难题5.6.2 智叟给出的分配方案5.6.3 分配原理第6章 概率——你运气好吗6.1 初中学习过的概率6.1.1 谁先开球6.1.2 用程序模拟抛硬币6.1.3 什么是概率6.1.4 必然事件与不可能事件6.1.5 概率的基本性质6.2 百枚钱币鼓士气6.2.1 狄青的计谋6.2.2 全为正面的概率是多少6.2.3 必然还是偶然6.3 庄家的胜率是多少6.3.1 一个看似公平的游戏6.3.2 庄家能赢钱吗6.3.3 庄家盈利比率6.3.4 游戏参与者获胜的概率6.4 你能中奖吗6.4.1 想中大奖吗6.4.2 计算中奖概率6.5 渔塘中有多少条鱼6.5.1 该怎么估算渔塘中的鱼6.5.2 用概率来估算6.5.3 用概率方法求π值第7章 翻一番是多少7.1 翻番的概念7.1.1 什么是翻番7.1.2 翻倍的概念7.1.3 计算倍数和番数7.2 复利的威力7.2.1 利润——投资回报7.2.2 认识单利7.2.3 认识复利7.2.4 计算投资回报的程序7.2.5 忘还钱的信用卡7.2.6 爱因斯坦的72法则7.3 对折纸张7.3.1 有趣的问题:纸张对折7.3.2 100米长的纸能对折几次7.3.3 计算对折次数的程序7.4 一棋盘的麦子7.4.1 舍罕王的赏赐7.4.2 需要多少麦粒7.5 折半法的运用7.5.1 翻番的逆运算7.5.2 找出假硬币7.5.3 编写程序找出假硬币7.5.4 折半法在查找中的应用第8章 数理逻辑——非此即彼8.1 逻辑的重要性8.1.1 模棱两可的表述8.1.2 肯定或否定8.1.3 程序中的逻辑判断8.2 命题逻辑8.2.1 什么是命题8.2.2 命题的逻辑形式8.2.3 简单命题8.2.4 复合命题8.2.5 复合命题的联结词8.3 布尔逻辑8.3.1 逻辑或8.3.2 逻辑与8.3.3 逻辑非8.3.4 逻辑异或8.3.5 二进制位运算8.4 考虑到各种可能了吗8.4.1 逻辑重叠的实例8.4.2 逻辑遗漏的实例8.4.3 用数轴确定边界8.5 用卡诺图简化逻辑函数8.5.1 什么是卡诺图8.5.2 三变量卡诺图8.5.3 四变量卡诺图8.5.4 卡诺图化简8.5.5 卡诺图中的相邻第9章 推理——逻辑的应用9.1 演绎推理9.1.1 认识演绎推理点9.1.2 三段论9.1.3 选言推理9.1.4 假言推理9.1.5 关系推理9.1.6 演绎推理综合实例9.2 归纳推理9.2.1 什么是归纳推理9.2.2 完全归纳推理9.2.3 不完全归纳推理9.3 足球比赛的得分9.3.1 粗心的记分员9.3.2 从已有数据推算出比分第10章 几何图形构造10.1 花盆摆放问题10.1.1 10盆花摆成5行,每行4盆10.1.2 转变思路,找出答案10.1.3 升级问题(10盆花摆10行,每行3盆)10.2 残缺的棋盘能补上吗?10.2.1 被切割的棋盘10.2.2 能拼接出残缺棋盘吗10.3 线条哪里去了?10.3.1 神奇的魔术10.3.2 解析丢失的线条10.4 图形剪拼10.4.1 均分三角形10.4.2 拼接正方形第11章 统筹规划11.1 认识统筹规划11.1.1 田忌赛马11.1.2 为什么会赢11.2 生活中的统筹规划11.2.1 匆忙的早晨11.2.2 如何节约运输成本11.3 著名的背包问题11.3.1 什么是背包问题11.3.2 用递归程序解决背包问题11.3.3 用穷举法解决背包问题
评论关闭。