二进制,素数(RSA),递归,排列组合,余数,概率,翻番,数理逻辑,推理,几何图形,统筹规划(动态规划)
全书要解决的问题:
编程怎么能和数学扯上关系?在真正的实战中,并没有感觉到数学有多大的用途,学数学有多大的意义吗?
数据的表示(二、八、十、十六进制)
为什么人类习惯用十进制? -- 人类就是有十根手指; 二进制太长, 十六进制运算规则更复杂。
我们都知道现在的计算机是64位字长,如果算位数的话,最大值是2**63, 如果这个要保存的数还要大于这个值,那我们又应当怎么来存储呢?
-- 可以在程序中用一个数组来表示大整数的各位(个人理解为是使用了分而治之的方法),由于数组元素的多少只受计算机内存的限制,因些,就可以处理任意长度的大整数。(不过需要注意的是,数组是要连续分配内存的一种结构,其范围受到内存设置的段长度影响)提个问题, 内存单元是多少位?
神奇的素数(除1和此整数自身外,无法被其他自然数整除的数)
素数在计算中的一个用途,就是在密码学中的利用。
素数是一类既简单又神秘的数字,由于其无分布规律的特点,所以可以在密码学中大量采用。(这难道就是传说中的不确定性?)
素数定理:1、在(a, 2a]之间必有一个素数, 2、存在任意长度的素数等差数列,等等
在密码学中一个应用:RSA原理
在计算中常用的加解密技术分为两类,对称加密与非对称加密,RSA是后者,即有公钥和私钥的存在, 那么RSA是怎么生成这两种的呢?如下操作:
哥德巴赫猜想:任意一个大于2的偶数都可以写成两个质数之和; (没被证明)
今天就先介绍这两个吧, 内容想想还挺多的。
想到一个问题:编程是否可以看成是数学规律在计算机中的实现?