素数判别和大数分解

数论中一个最基本、最古老而当前仍然受到人们重规的问题就是判别给定的整数是否素数(简称为素数判别或素性判别)和将大合数分解成素因子乘积(简称为大数分解)。在历史上,这个问题曾经吸引了包括费马(Fermat)、欧拉(Euler)、勒让德(Legendre)和高斯(Gauss)在内的大批数学家,他们花费了大量的时间和精力去研究这个问题。高斯在其著名的《算术探讨》(《Disquisitiones Arithmeticae》)中称道:“把素数同合数鉴别开来及将合数分解成素因子乘积被认作为算术中最重要最有用的问题之一。”我国的《易经》中也对这个问题作了研究。
  素数判别和大数分解这个问题具有很大的理论价值。因为素数在数论中占有特殊的地位,鉴别它们则成为最基本的问题;而把合数分解成素因子的乘积是算术基本定理的构造性方面的需要。人类总是有兴趣问如下的问题:2131-1是否素数?由23个1组成的数是否素数?怎么分解31487694841572361?对素数判别和大数分解的研究必然会丰富人类的精神财富。更重要的是,素数判别和大数分解具有很大的应用价值。在编码中,需要讨论某类有限域及其上的多项式,这类有限域就是由素数
  在快速数论变换中,要讨论Z/nZ上的卷积运算,就要知道Z/nZ的乘法群的构造,而这就依赖于将n分解成素因子的乘积。下面介绍的RSA公开密钥码体制更加说明了这个问题的两个方面在实际应用中的作用。1977年,艾德利曼(Adleman)、希爱默(Shamir)和鲁梅利(Rumely)发明了一个公开密钥码体制。在这个密码体制中,对电文的加密过程是公开的,但是,你仅知道加密过程而未被告知解密过程则不可能对电文进行解密。他们的体制就是依靠这样一个事实:我们能够很容易地将两个大素数(譬如两个百位素数)乘起来;反过来,要分解一不大整数(譬如200位)则几乎不可能。(关于RSA体制的详细介绍,请参阅文献[1])。因此RSA体制就与素数判别和大数分解有密切联系。首先,要具体建立一个RSA体制就需要两个大素数,因而就涉及到寻找大素数的问题;而RSA体制的破译之可能性就依赖于分解一个大数可能性。于是,RSA体制的建立与破译就等价于素数判别与大数分解问题。近来,由于计算机科学的发展,人们对许多数学分支的理论体系重新用计算的观点来讨论。从计算的观点来讨论数论问题形成了当前很活跃的分支-―计算数论。而素数判别和大数分解成为这一分支的重要组成部分。在这一部分里提出了两个重要的、悬而未决的问题:是否存在判别素数的多项式算法?是否存在分解大整数的多项式算法?已知道“分解整数”这个问题是一个NP完全问题,因此对上面第二个问题的讨论是解决计算机科学中的难题:“NP完全问题是否一定是多项式算法可解的?”的一个突破口。因此,素数判别和大数分解对计算机科学来说也是很有价值的。
  最直接的素数判别和大数分解方法就是试除法,即对整数n,用2,…,n-1去试除,来判定n是否素数,分解式如何。这个方法是最简单的一个方法,古希腊时就被人所知,但这个方法对较大的数(20位左右)就要耗费很多时间。在本世纪四十年代电子计算机出现之前,尽管产生了许多素数判别和大数分解方法,但因为用手算,速度太慢,很多方法在实用中即使对十几位的数也需要好几天,而对更大的数就无能为力了。随着计算机的出现及发展,人们开始用这个有力的工具来研究素数判别和大数分解。到六十年代末期,已产生了许多新方法,历史上的许多方法也得到了应用,使得对四十几位数的素数判别可以很快得到结果。而到七十年代末,数论学家和计算机专家们已深入地研究了这个问题,得到许多实际有效的方法。用这些方法在较好的计算机上判别一个100位数是否素数只需不到一分钟;分解70位左右的整数也是日常工作了。这些成果已引起人们的普遍关注。在这个领域中的研究空前活跃。虽然离问题的彻底解决还很远,但在本领域中已取得了一个又一个的突破。在这方面的研究必有光辉的前景。

你可能感兴趣的:(大数分解)