1.
然而,实际上我公布的非素数将会有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)的威力。分布式计算技术使得用大量普通计算机去做本来要用超级计算机才能完成的项目成为可能,这是一个前景非常广阔的领域。