1.
密码学涉及到将需要保密的信息打乱,使得只有接受者才能整
理出它们,而别的任何可能
截获它们的
人都无法整理出它们。这种打乱的过程需要使用保密的密码本,而整理这些信息按管理只需
要接收者反过来使用密
码本就行了。在这个程序中,密码本是保密环节中最薄弱的一环。首先,接收者和发
送者必须约定密码
本的详细内容,而这种信息的交流是一个有泄密风险的过程。如果敌方能截获正在交流的密
码本,那么
他们就能译出此后所有的信息。其次,为了保持安全性,密码本必须定期更改,而每一次更改时,都有新的密码本被截获的危
险。
密码本的问题围绕着下面的事实展开:它的使用,一次是打乱信息,另一次是反
过来整理出信息
,
而整理信息几乎与打乱信息同样容易。然而,经验告诉我们,在许多情况中整理要比
打乱困难的多——打碎一个鸡蛋是相对容易的,而重新拼好它则困难的多。
在20世纪70年代,会特菲尔德·迪菲和马丁·海尔曼提出了这样的
思想:寻找一种按一个方向很容易进行,而按相反方向进行则不可思议的困难的数学程序。这种程序将会提供十分完美
的密码本。举例
来说,我可以有自己用的、由两部分组成的密码本,并且
在公用指南中公开它的用于打乱信息的那部分。于是,任何人都可以向我发送打乱过的信息,但是只有我知道密码本中用于整理信息的那一半。虽然人人都了解密码本中关于打乱信息的那部分,但是它和密码本中用来整理信息的那部分毫无联系。
在1977年,麻省理工学院一群数学家和计算机专家罗纳德·里维斯特、爱迪·沙弥和伦纳德·阿德李曼认识到素数可能是易打乱/难整理过程的理想的基础。为了制成我自己的私人密码本,我会取两个大素数,每一个多达80个数字,然后将它们乘起来得到一个大得多的非素数。为了打乱信息所需要的一切,就是知道这个大的非素数,它们称为素因数。现在我可以公开大的非素数,也即密码本中
打乱
信息的那一半,而自己保存那两个素因
数,也即密码本中整理信息的那一半。重
要的是,即使人人都知道这个大的非
素数,他们要判断出那两个素因数却非常困难。
举一个简单的例子,我可以交出非素数589,这
可能会使每个人都能代我打乱信息。然而
,我将保守589的两个素因数的秘密,结果只有我能够整理信息。如果别的人
能判断出这两个素因数,那么他们也能整理我的信息,但是即使是对这个不大的数,两个素因数是什么也不是显而易见的。在589这个情形中,在台式电脑上只要花几分钟就可以算出两个素因数实际上是31和19,所以我的密码本的秘密不会持久。
然而,实际上我公布的非素数将会有100位以上的数字,这就使找出他的素因数的任务变得几乎是不可能的。即使用世界上最快的计算机来将这个巨大的非素数(打乱信息的密码)分解成它的两个素
因数(整理信息的密码),也要花几年时间才能得到答案。于是,为挫败外国间谍,我仅仅需要每年一次更改我的密码本。每年一次我宣布我的巨大的非素数,
任何人都想尝试整理我的信息,就必须从头开始设法算出这两
个素因数。
2.
一个单词如果交换其所含字母顺序,得到的单词称为兄弟单词,例如mary和army是兄弟单词,即所含字母是一样的,只是字母顺序不同,用户输入一个单词,要求在一个字典中找出该单词的所有兄弟单词,并输出。给出相应的数据结构及算法。要求时间和空间复杂度尽可能低
目前思想:
struct {
char data;
int n
};
根据数学定理:任何一个大于1的自然数N,都可以唯一分解成有限个质数的乘积 N=(P_1^a1)*(P_2^a2)……(P_n^an) , 这里P_1<P_2<…<P_n是质数,且唯一。
例如
a=2 b=3 c=5 d=7 e=11…
f(abcd)=2*3*5*7=210
然后字典里找乘积210的位数相同的一定是这5个字母组合的单词就是兄弟单词
3.
自古希腊时代直至17世纪,人们探寻
梅森
素数的意义似乎只是为了探寻
完全数
。但自梅森提出著名断言以来,特别是欧拉证明了
欧几里得
关于完全书的定理的逆定理以来,完全数已仅仅是梅森素数的一种“副产品”了。
探寻梅森素数在现代已有十分丰富的意义。探寻梅森素数是发现已知
最大素数
的最有效的途径,自欧拉证明M31为当时最大的素数以来,在发现已知最大素数的世界性竞争中,梅森素数几乎囊括了全部冠军。
探寻梅森素数是测试计算机运算速度及其他功能的有力手段。如M 1257787就是1996年9月美国克雷公司在测试其最新
超级计算机
的运算速度时得到的。梅森素数在推动计算机功能改进方面发挥了独特作用。发现梅森素数不仅仅需要高功能的计算机,它还需要素数判别和数值计算的理论与方法以及高超巧妙的
程序设计技术
等等,因而他还推动了“数学皇后”——
数论
得发展,促进了
计算数学
、程序设计技术的发展。
由于探寻梅森素数需要多种学科的支持,也由于发现新的“最大素数”所引起的国际影响,因而使得对于梅森素数的探寻能力已在某种意义上标志着一个国家的科学技术水平,而不仅仅是代表数学的研究水平。从各国各种传媒(而不仅仅是学术刊物)争相报道新的梅森素数的发现,也可清楚地看到这一点。
梅森素数在实用领域也有用武之地。现在人们已经大素数用于现代密码
设计领域
,其原理是:将一个很大的数分解成若干素数的乘积非常困难,但将几个素数相乘却相对容易得多。在这种密码设计中,需要使用较大的素数,素数越大,密码被破译的可能性就越小。
探寻梅森素数最新的意义是,它促进了
分布式计算
技术的发展。从最新的8个梅森素数时GIMPS项目中发现这一事实,我们已可以想象到网格(Grid)的威力。分布式计算技术使得用大量普通计算机去做本来要用超级计算机才能完成的项目成为可能,这是一个前景非常广阔的领域。