您的位置:首页 > 职场人生

程序员的数学思维修炼

2015-08-14 17:41 471 查看

程序员的数学思维修炼(趣味解读)周颖 等

1.1.4 程序中的0

2015-07-31
在电子技术中,0一般表示低电平,1为高电平。在逻辑计算中,0一般表示逻辑假(False),1为逻辑真(True)。

1.4.1 神奇的八卦:八进制

2015-07-31
在八卦中,每一卦形代表一定的事物。乾代表天、坤代表地、坎代表水、离代表火、震代表雷、艮(gèn)代表山、巽(xùn)代表风、兑代表泽。

1.4.5 各种进制之间的转换 

2015-07-31





第2章 神奇的素数

2015-08-02
数学家都没研究出来的规律,程序员当然也不可能会找到。但是,任何事物都有正反两面,正是由于素数的无规律特点,在密码学中就可以大量采用。另外,在一些齿轮啮合设计中,也通常将齿轮的齿数设计成素数,以增加两齿轮中两个相同的齿相遇啮合次数的最小公倍数,这样可增强齿轮的耐用度,减少故障。

2.1.1 什么是素数

2015-08-02
数学中的定义是这样的:素数,又称为质数,是指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数。或者说素数是只有1和本身两个因数的数。

2.1.2 验证素数

2015-08-02
其实,可以对素数的定义进行进一步的分析。要判断数N是否为素数,不需要用N一直除到N-1才能确认,而只需要除到alt就可以了。

2.1.3 寻找素数的算法

2015-08-03
由于偶数都能被2整数,因此偶数都不是素数(2除外),则将这些数筛去,得到如图2-5(b)所示的数据(设置了背景色的数字将被筛去)。

接着再将3的倍数筛去,得到如图2-5(c)所示结果。接下来继续将5的倍数筛去,得到图2-5(d)所示结果。

最后再将7的倍数筛去,得到如图2-5(e)所示结果,即可得到100以内的所有素数。从图2-5中可看到,在使用Eratosthenes算法进行筛选时,只需要执行4次筛选就完成了100以内的素数的筛选,效率非常高。

2.1.4 已被证明的素数定理

2015-08-03
1.在(a,2a]之间必有一个素数

在一个大于1的数a和它的2倍之间(即区间(a,2a]中)必存在一个素数。如图2-6所示,可看到在(a,2a]区间中都至少包含一个素数。

2015-08-03
2.存在任意长度的素数等差数列

什么是等差数列呢?这是一个古老的数学课题。一个数列从第二项起,从后项减去前项所得的差是一个相同的常数,则这个数列就被称为等差数列。

2015-08-03
3.其他已证明的素数定理

已证明的素数定理还包括以下几项:一个偶数可以写成两个数字之和,其中每一个数字最多只有9个质因数。一个偶数必定可以写成一个质数加上一个合数,其中的因子个数有上界。

一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合数。后来,有人简称这个结果为(1+5)。一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合数,简称为(1+2)。

2.2.1 什么是孪生素数

2015-08-03
所谓孪生素数,是指间隔为2的相邻素数,它们之间的距离已经近得不能再近了,就像孪生兄弟一样,因此被称为孪生素数,也称为双生素数。

2.3.1 什么是RSA

2015-08-03
RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也十分流行。RSA算法就是素数的典型应用

2015-08-03
在计算机中常用的加解密技术分为两类,即对称加密和非对称加密。

2015-08-03
在对称加密技术中,对信息的加密和解密都使用相同的密钥Key,如图2-8所示,也就是说使用同一个密钥Key对数据进行加密和解密。这种加密方法可简化加解密的处理过程,信息交换双方都不必彼此研究和交换专用的加解密算法。如果在交换阶段,密钥Key没有泄露,那么加密数据的机密性和报文完整性就可以得到保证。

图2-8对称加密技术虽然简单,但存在一些不足,由于加密、解密都需要使用同一个Key,这样,信息传送双方都要接触到这个Key,密钥Key更容易泄露。

2015-08-03
而非对称加密(又称为公开密钥加密)中,不再只有一个密钥Key了。在非对称加密算法中,密钥被分解为一对,一个称为公开密钥(简称公钥PK),另一个称为私有密钥(简称私钥SK)。对于公钥,可以通过非保密方式向他人公开,而私钥则由解密方保存,不用对别人公开。

发送信息的一方通过公钥对数据进行加密,然后发送给接收方。接收方通过私钥对密文进行解密,加、解密的过程如图2-9所示。图2-9由于非对称加密方式可以使通信双方无须事先交换密钥就可以建立安全通信,因此被广泛应用于身份认证、数字签名等信息交换领域。

非对称加密体系一般是建立在某些已知的数学难题之上,是计算机复杂性理论发展的必然结果。最具有代表性的非对称加密方式是RSA公钥密码体制。

2.3.2 RSA算法基础

2015-08-04
在RSA算法中,最基础的一个定理就是RSA定理,这个定理描述如下:

若P和Q是两个相异质数,另有正整数R和M,其中M的值与(P-1)(Q-1)的值互质,并使得(RM)mod(P-1)(Q-1)=1。有正整数A,且A<PQ,设:则有:A=B

在以上描述中mod表示取余的运算。

2015-08-04
下面介绍一下RSA算法的基础操作步骤。

1.生成公钥和私钥生成公钥PK和私钥SK的步骤如下。

(1)随意选择两个大的素数P和Q,P不等于Q。(2)将P、Q两素数相乘得到一个数N,即N=PQ。

(3)将P、Q分别减1,再相乘,得到一个数T,即T=(P-1)(Q-1)。(4)选择一个整数E,作为一个密钥,使E与T互质(即E与T的最大公约数为1),并且E必须小于T。

(5)根据公式DE mod T=1,计算出D的值,作为另一个密钥。(6)通过以上步骤计算得出N、E、D这3个数据,其中(N、E)作为公钥,(N、D)作为私钥(当然也可以将公钥和私钥互换)。

(7)生成公钥和私钥后,就可以将公钥对外发布了,如图2-10所示。图2-102.用公钥加密信息

发送信息的一方收到公钥PK后,就可以通过公钥PK对数据进行加密。加密的操作步骤如下,其中明文为M,加密后得到的密文为C,公钥为(N,E)。3.用私钥解密信息

接收方持有私钥(N,D),在接收到密文C后,即可通过私钥进行解密,得到明文M。解密的过程如下:

2.5.1 什么是梅森素数

2015-08-04
梅森素数是指形如2P-1的正整数,其中指数P是素数,常记为MP。若MP是素数,则称为梅森素数。

3.1.5 一个简单例子:求最大公约数

2015-08-04
如果有一个自然数A能被自然数B整除,则称A为B的倍数,B为A的约数。几个自然数公有的约数,叫做这几个自然数的公约数。这些公约数中最大的一个公约数,称为这几个自然数的最大公约数,简称为GCD。

2015-08-04
怎么求最大公约数呢?早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法——辗转相除法。

辗转相除法的方法是用较大的数M除以较小的数N,较小的除数N和得出的余数R构成新的一对数,继续重复前面的除法(用较大数除以较小数),直到出现能够整除的两个数,其中较小的数(即除数)就是最大公约数。

3.2.1 阶乘该怎么计算

2015-08-04
一个正整数的阶乘是所有小于或等于该数的正整数的积,并且有0的阶乘为1的约定。自然数n的阶乘写作n!。

3.2.4 递归的本质:缩小问题规模

2015-08-04
递归式解决逻辑问题的基本思想是:把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。

4.5.2 能表示更大范围的编码

2015-08-05
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0~0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。

5.2.2 下月的今天是星期几

2015-08-05
根据历法,每年的1、3、5、7、8、10、12月为大月,每月有31天,每年的4、6、9、11月为小月,每月30天,每年的2月的天数根据平年、闰年分别为28、29天。

5.2.3 10年后的“今天”是星期几

2015-08-05
一回归年有365天5时48分46秒,其天数不是整数。如果一年的天数不是整数,对人们来说,使用起来很不方便。为了解决这个矛盾,公历制定了相应的设置闰年的法则,根据该法则就可判断是否为闰年。设年份为n,则判断n是否为闰年的法则如下:

如果n能被100整除,且能被400整除,则n是闰年;如果n能被4整除,但不能被100整除,则n是闰年。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: