《程序员的数学思维修炼》 读书笔记
- 版本: Kindle电子书
- 文件大小: 16252 KB
- 纸书页数: 302
- 出版社: 清华大学出版社; 第1版 (2014年4月1日)
- 语种: 简体中文
- ASIN: B00LZNH432
- 品牌: 清华大学出版社
- 地址: http://www.amazon.cn/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E6%95%B0%E5%AD%A6%E6%80%9D%E7%BB%B4%E4%BF%AE%E7%82%BC-%E5%91%A8%E9%A2%96-%E7%AD%89/dp/B00LZNH432/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1422272454&sr=1-1&keywords=%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E6%95%B0%E5%AD%A6%E6%80%9D%E7%BB%B4%E4%BF%AE%E7%82%BC
目录
第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 什么是RSA 2.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 用穷举法解决背包问题
说明
数学在人类文明的发展过程中起着非常重要的作用。数学推动了重大的科学技术进步。从远古的“结绳记事”,到现代计算机技术的快速发展,都与数学这门学科的发展密不可分。
无论是日常生活中简单的商品交易计算,还是神舟飞船设计中复杂的计算,都离不开数学。生活即数学。没有二进制,就不会有现在的计算机;没有几何学,就没有现在的高楼大厦……。
对于程序员来说更需要知道:数学是计算机科学的基础。在我国,绝大部分大学的计算机科学系都是从数学系中分出来的。由此也可以看出,计算机科学与数学的关系非常紧密。
数学是一门化繁为简的学科。通过数学,可以对现实生活中的很多不同事物进行高度抽象,从而能找出不同事物的共性。不过,由于数学的这种高度抽象,又使数学变得很难学。特别是一些复杂的公式推导,看起来就头痛。
本书面向程序员介绍了程序设计中常用的数学基础知识。通过阅读本书,可以训练程序员的数学思维能力和程序设计能力,进而拓宽视野,增强职场竞争力。
本书特点
· 简单易懂 用通俗易懂的语言讲解知识点,尽量避免复杂的公式推导过程,让读者能够轻松阅读并掌握相关的数学知识。
· 门槛很低 阅读本书的读者不需要精通很多高深的数学知识,只需要具备基本的四则运算、乘方等数学基础知识和日常生活中的基本逻辑判断能力即可。
· 生动有趣 本书拒绝枯燥乏味的讲解,而是代之以轻松活泼的风格,讲解时列举了大量我们都很熟悉,而且非常有趣的数学实例。
· 内容丰富 本书从最简单的数据的表示开始,对素数、递归、排列组合、逻辑推理、几何构造、统筹规划等方面都会逐一介绍,涵盖了程序员需要掌握的数学知识。
· 图文并茂 讲解每个知识点和实例时,都给出了简单易懂的图示和必要分析,让读者理解起来清晰明了,没有任何障碍,也让读者感觉到学习数学并不困难。
本书内容概述
第1章通过一则童话故事导入了数据大小的知识,然后逐步介绍了十进制、二进制、八进制、十六进制以及其他常用进制的知识,还介绍了不同进制的转换方法。
第2章从素数的判断开始,逐步介绍了与素数相关的数学知识,包括孪生素数、梅森素数、哥德巴赫猜想、RSA的应用等内容。
第3章介绍递归这种自己调用自己的方法,通过阶乘、汉诺塔、斐波那契数列等经典实例,练习从复杂事物中发现递归结构的方法。
第4章的主题是排列组合,从乘法原理、加法原理入手,介绍了排列与组合的概念和关系,并研究了计算机中的字符编码、密码长度等相关内容。
第5章讨论余数。主要介绍使用余数对数据进行分组,如日历、一些小魔术都是通过余数分组的规则进行的;本章还讨论了计算机中的奇偶校验及两个有趣的问题(座位安排和智叟分牛)。
第6章介绍概率的相关知识,首先从两个常见的事例导入概率的概念,接着从军事故事、赌场游戏、中奖概率等方面介绍了概率的实际应用。
第7章学习翻番的知识。首先介绍翻番和翻倍的概念、计算方式。接着进一步通过复利的威力、对折纸张、舍罕王的赏赐等实例,展示了翻番这个令数据快速增长的数学概念。最后还介绍翻番的逆运算——折半的应用。
第8章学习数理逻辑的相关知识,介绍了逻辑、命题逻辑、布尔逻辑、逻辑的重叠与遗漏等概念,最后介绍了通过卡诺图化简逻辑表达式的方法。
第9章则在第8章的基础上进一步讨论了逻辑推理,包括演绎推理中的三段论、选言推理、假言推理、关系推理,以及归纳推理中的完全归纳推理和不完全归纳推理。
第10章介绍了几何图形构造的基础知识,从花盆摆放、残缺棋盘、丢失的线条等有趣实例,初步了解几何图形构造,最后还介绍了几何图形的分割与拼接。
第11章讨论统筹规划相关知识,首先从田忌赛马这个古老故事中看出统筹规划的重要性,然后通过生活中的两个简单例子认识统筹规划,最后还讨论了“背包问题”及其程序设计方法。
本书读者对象
本书可适用以下各类人员阅读:
· 计算机专业的学生;
· 数学专业的学生;
· 程序设计人员;
· 数学爱好者;
· 编程爱好者。
呐、我首先承认是1.99很吸引人、
本书写的非常非常……奇葩吧、
说难不难说简单也不是那样、、
让人不望而却步吧、