❶ 为什么判断一个数是不是2或5的倍数只要看个位数,而三的倍数要看各个数位上的数之和
之所以判断一个数是不是二或者五的倍数,只要看个位数,而三的倍数正要看各个位数的数值之和,是因为三是一个比较特殊的数字,所以具有符合这样的数学规律,计算才会更精准。所以正确的计算方式要多和老师学习,和别人学习,要尊重对方的意见,做好以下几点。
1、懂得替他人着想。凡事不计较,不会因为一些小事而斤斤计较,也不会因为别人对你做错了什么不肯原谅自己,不肯原谅他人,真正的对自己好的是放过他人也就是放过自己。平时做事要懂得洞察他人的心里,见到人要懂得问好。
2、自己成功了,不瞧不起他人,自己失败了,不瞧不起自己。做一个谦虚、不卑不亢的人。即使自己现在一无所有,也不会过分的自卑,贬低自己,而是自己给自己鼓励,即使自己现在成功了,也不会瞧不起他人,还是会努力的检查自己的不足。
3、善于倾听别人的话语。在别人没有说完话时不打算他人的话。如果对对方的意见有看法,也不要去否定他人的想法。要等他人说完再表达自己的看法。这样才能收获到更多的友情,才能收获到真正的朋友们。
4、尊重对方的个性和想法,不要做什么事情都用强硬的口吻与人对话。世界上没有完全相同的两片树叶,所以说要懂得尊重对方的爱好,即使对方不愿意听自己的言语,自己就不要一味的再说,另外要善于和对方交谈,不要总谈论自己的悲伤,要善于倾听他人的想法,懂得帮助他人。
5、尊重对方的隐私,少与他人争辩一些无关紧要的事情。我们每个人都有自己并不想回答的事情,所以有时候不要去逼问对方。如果对方不想回答,或者回答的很含糊,那么就马上明白对方不喜欢回答这个问题,就不要继续再说这样的话题。
6、无论你喜欢还是讨厌的人,都要学会尊重他人。尊重敌人就相当于我们没有敌人,和每个人都是友好相处的。所以说尊重他人是一种智慧。我们要有宽广的胸怀,对比自己优秀的人要向他人学习,对比自己差的人也要学会友好相处。
7、不为自己的错误找借口,自己做错事情要承认,要努力的接受自己的不足,只有肯接受自己的缺点,才能更好的接受他人的缺点,对别人做错的事情不要过分责备,要懂得宽容。
1、懂得替他人着想。凡事不计较,不会因为一些小事而斤斤计较,也不会因为别人对你做错了什么不肯原谅自己,不肯原谅他人,真正的对自己好的是放过他人也就是放过自己。平时做事要懂得洞察他人的心里,见到人要懂得问好。
2、自己成功了,不瞧不起他人,自己失败了,不瞧不起自己。做一个谦虚、不卑不亢的人。即使自己现在一无所有,也不会过分的自卑,贬低自己,而是自己给自己鼓励,即使自己现在成功了,也不会瞧不起他人,还是会努力的检查自己的不足。
3、善于倾听别人的话语。在别人没有说完话时不打算他人的话。如果对对方的意见有看法,也不要去否定他人的想法。要等他人说完再表达自己的看法。这样才能收获到更多的友情,才能收获到真正的朋友们。
4、尊重对方的个性和想法,不要做什么事情都用强硬的口吻与人对话。世界上没有完全相同的两片树叶,所以说要懂得尊重对方的爱好,即使对方不愿意听自己的言语,自己就不要一味的再说,另外要善于和对方交谈,不要总谈论自己的悲伤,要善于倾听他人的想法,懂得帮助他人。
5、尊重对方的隐私,少与他人争辩一些无关紧要的事情。我们每个人都有自己并不想回答的事情,所以有时候不要去逼问对方。如果对方不想回答,或者回答的很含糊,那么就马上明白对方不喜欢回答这个问题,就不要继续再说这样的话题。
6、无论你喜欢还是讨厌的人,都要学会尊重他人。尊重敌人就相当于我们没有敌人,和每个人都是友好相处的。所以说尊重他人是一种智慧。我们要有宽广的胸怀,对比自己优秀的人要向他人学习,对比自己差的人也要学会友好相处。
7、不为自己的错误找借口,自己做错事情要承认,要努力的接受自己的不足,只有肯接受自己的缺点,才能更好的接受他人的缺点,对别人做错的事情不要过分责备,要懂得宽容。😄😃
❷ 3的400次方最末两位数字是什么
费马小定理:假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p)
感觉题目给出的答案不是应用费马小定理呀,由于3和100互素,由费马定理知:结果应该是100^(3-1)≡1 (mod 3)。而不是3^40≡1 mod 100,虽然这个式子是成立的。
3^40的最后三位数字当然是对1000求模。
3^400除以7的余数是多少方法上没有什么区别,只不过是除数越小,题目相对越简单。
3^400≡9^200≡(7+2)^200≡2^200≡2^2*2^198≡4*2^(3*66) ≡4*8^66≡4*(7+1)^66≡4*1≡4(mod 7)。
❸ 我想知道质数的定义,谢谢大家.
所谓质数或称素数,就是一个正整数,除了本身和 1 以外并没有任何其他因子.例如 2,3,5,7 是质数,而 4,6,8,9 则不是,后者称为合成数.从这个观点可将整数分为两种,一种叫质数,一种叫合成数.(有人认为数目字 1 不该称为质数)著名的高斯「唯一分解定理」说,任何一个整数.可以写成一串质数相乘的积.
(例1) ,, , , , ,这就是说,任何数都由质数构成的.
(例2) 2=(1×2),3,5,7,11…均为质数.而4,6,8不为质数.(因为最少还有因数2)
由於质数本身的奇异性使人无法一把抓住它出现的规律,抓住它出现的特性甚至不知道它实际分布的情形.简单来说,给你一个正整数,你竟不可知道它是否是一个质数,即使你用尽了方法,证明它不可能是一个质数,但竟无法分解它,举例来说:211-1=2047 可以分解成 .267-1 呢 据说美国代数学家 Frank Neloon Cole花了三年多才发现的.自然那时「电脑时代」还未来临,只能靠无限的耐心与毅力,再加上一副长於计算数目的训练才弄得出来.但有了电脑似乎好不了多少,数目字加大了,困难依旧.1931年 D.H. Lehmar 证明了 2257-1 是一个大合成数.大!不错.它等於 231,584,178,474,632,390,847,141,970,017,375,815,706,
539,969,331,281,128,078,915,168,015,826,259,279,871
一个78位数字的大数,到目前仍未有人或电脑能分解它!
因此,虽然知道一个数目是否质数也许没有多大用处,但仍是很有趣味,最少在找它的过程中会引起很多方法论的问题.
质数的特性
1质数除了2之外,必为奇数.(换句话说,2是最小的质数,也是唯一的偶数)
2「1」不算是质数.
3「算术基本定理」:比1大的任何整数,必可分解为质因数的乘积,且表示的方法是唯一的.
质数的个数与求法
1欧几里德证明了「质数必有无限个」
2「Eratosthenes」滤套
若要求从2到n的质数,只要检查n是否可被不大於的质数整除即可.要判断313是否为质数,则只要检查313是不是可以被小於或等於17的质数整除即可.
3质数有没有一种特殊的型式呢
Mersenne质数:型如,若为质数时称之(但质数不一定型如,
例如就非质数.)目前已知有3, 7, 31, 127,等38个,还在寻找中…
费玛质数:型如,当n=0到4时.(但质数不一定型如,例
如n=5时,非质数.)
【注】型如称为「费玛数」,而费玛质数只有3 , 5, 17 , 257 , 65537等五个.
4可不可以用一个公式,表示出所有的质数呢
(1)欧拉::在x=0,1,2…40时,可得41个质数
(1)勒真德::在x=0,1,2…28时,可得29个质数
:在x=0,1,2…79时,可得80个质数
:在x=1,2…11000时,可得11000个质数
●但是,没有一个多项式可表示出所有的质数
为什麼要找质数
「既然质数有无限多个,那麼为什麼数学家要投入那麼多的心力一直寻找更大的质数呢 」
简单的说,数学家就和一般人一样,「你有收藏东西的兴趣习惯吗 」「喜欢在比赛中得到名次吗 」这个都是理由之一.回答这个问题,可以用几个方向来说明,
一,这是传统!
在西元前300年的欧几里德已经开始这个追求!他在「几何原本」中提及完全数的概念,其中和麦司尼质数产生了关联,开启了研究之门,之后大数学家如费玛,欧拉,麦司尼,笛卡尔…相继投入这个追寻的工作中.也就在寻找大的质数的过程中,对基本数论有很大的助益,因此这个寻找的传统值得被继续~
二,它的附加价值!
因为美国的政治上的目的,才有把人送上月球的创举,但是追寻大的质数例如像麦司尼质数,对社会影响的却是持续不断的,它的副加价值在於不断促进科技的进步与人们的日常生活有用的东西材质的研发,也改进教育建设让生活更有生产力.在寻找并纪录麦司尼质数的过程中,让老师可以带领学生投入研究,这让学生将研究的精神用於工作上,让工程或科学的得以进步,当然这只是副加价的一部份而已.
三,人们喜欢美丽且稀少的物品!
如前文提及欧几里德已经开始这个追求后,它是如此稀少(目前已知有30多个,还在寻找中),不仅如此它也是美丽的;数学上什麼叫作「美丽」 例如人们希望证明是简短,明了,而且可以绐合旧知识让你了解新的东西!而麦司尼质数的型式与证明都合符合上述的要求.
四,无上荣耀!
运动选手为什麼不断追不更高,更快,更远呢 难道是希望他们在工作上可以使用这些技巧吗 不是吧,它们都是渴望竞争,为了荣耀(to win)!险峻的峭壁和高山峻岭对於喜欢攀岩,登山的人,有无法抗拒的魅力,数学的探索也是如此,看著无法想像巨大的数字竟是质数时那种心情是相同的,因此继续寻找下一个的渴望,岂是语言可以形容
人们当然需要务实,但是也需要好奇心和不断尝试的精神,才能而不断进步.
五,对电脑的考验!
当电脑的发明之后,人们可以藉由电脑的计算去找麦司尼质数,因为检验一个已知的质数都要经过十亿次以上的计算才会计算出来(以电脑来算当然很快),这时候就是测验电脑稳不稳定的好时机,Intel的Pentium处理器,就被Thomas Nicely在计算twin prime constant时,找到有bug存在.
六,了解质数分布的情形!
虽然数学不是实验的科学,但是在我们会用例子去检验我们的猜测,当例子愈来愈多时,我们也会更了解事实,而质数的分布情形这是如此,例如高斯在看过质数表之后猜测了质数定理(prime number theorem),这个定理在1896由哈达玛(Hadamard)及普辛(Pouusin)分别证得:
质数是自然数的一部份,有趣的是,它却与自然数的个数一样多,也有无穷多个.两千多年前,古希腊数学家就从理论上证明了这一点.不过,质数看上去要比自然数少的多.有人统计过,在1到1000之间,有168个质数;在1000到2000之间,有135个质数;在2000到3000之间,有127个质数;而在3000到4000之间,就只有120个质数了,越往后,质数就会越稀少.那麼,怎样从自然数里把质数给找出来呢 公元前三世纪,古希腊数学家埃拉托塞尼(Eratosthenes)发明了一种很有趣的方法.埃拉托塞尼常把数表写在涂了白腊的木板上,遇到需要划去的数,就在那个数的位置刺一个孔;随著合数逐一被划掉,木板上变得千疮百孔,像是一个神奇的筛子,筛掉了合数,留下了质数.所以,人们将这种求质数的方法叫做"埃拉托塞尼筛法".
1. 我们把1~100的自然数,按照顺序列成一张百数表.(如下表)
2. 首先把1划掉,因为1既不是质数,也不是合数.
3. 接下来一个数是2,它是最小的质数,应予保留.但2的倍数一定不是质数,应该全部划掉;也就是从2起,每隔1个数就划掉1个数.
4. 在剩下的数中,3是第一个未被划掉的数,它是个质数,应予保留.但3的倍数一定不是质数,应该全部划掉;也就是从3起,每隔2个数就划掉1个数.
5. 在剩下的数中,4已被划掉了,其余的数,5成为第一个未被划掉的数,它是质数,也应予以保留.但5的倍数一定不是质数,应该全部划掉;也就是从5起,每隔4个数就划掉1个数.
6.仿照步骤1~5,继续划下去,数表上最后剩下的就是1~100之间的质数了.
埃拉托塞尼筛法
这种方法是世界上最古老的一种求质数的方法,它的原理很简单,运用起来也很方便.现在,凭著经过改进后的埃拉托塞尼筛法,数学家们已把10亿以内的质数全都筛出来了.怎样找质数呢 这个问题据说自希腊及中国周朝已有人在问这个难题了.下面是一些初步查询.
质数是无穷.这很早就证明了.因若 p1=2, p2=3, pn 是最初 n 个质数,则新数目 必由一个不等於 p1, p2, , pn 中任一个质数的新质数所除尽,故而 pn+1 存在了;且
举例说,
但 30031=59 x 509
证明了 ,不必是质数.
考虑
f(n) 形式中是否有无限个质数存在或 f(p) 中是否有无限合成数存在呢
怎样证明 n 是一个质数呢
传统的「筛法」是将任一个数n的可能因子查证,简化后;只要过滤所有小於的质数即可以了.就是n若是合成数,必有一个小於的质因数.如 3,5,7,11,13,等等.目前零碎地查质数的方法固然有,但仍无一万全之方.
费马的猜测
17世纪时,有个法国律师叫费马(Fermat,1601-1665),他非常喜欢数学,常常利用业余时间研究高深的数学问题,结果取得了很大的成就,被人称之为"业余数学家之王".费马研究数学时,不喜欢搞证明,喜欢提问题;他凭藉丰富的想像力和深刻的洞察力,提出一系列重要的数学猜想,深刻地影响了数学的发展,他提出的"费马最后定理",几百年来吸引了无数的数学家,直到1994年才由美国普林斯顿大学的怀尔斯得出证明.
他在西元1640年提出了一个公式:『 2+1』,他验算了n等於1到4的情况,发现都是质数以后(如下表),就直接猜测只要n是自然数,这个公式求出来的一定是质数.」
n
2+1
1
2+1=5(质数)
2
2+1=17(质数)
3
2+1=257(质数)
4
2+1=65537(质数)
1. 费马最喜欢的数学分支是数论,他曾深入研究过质数的性质,他发现了一个有趣的现象.计算 = 它是一个质数吗 .
2. 那 又是多少呢 它是一个质数吗 .
3. 再下去, 是多少呢 它是一个质数吗 .
4. 最后, 是多少呢 它是一个质数吗
解答:
=5;它是质数.
=17;它是质数.
=257;它是质数.
=65537;它是质数.
费马当年并没有继续算下去,他猜测说:只要n是自然数,由这个公式 得出的数一定都是质数;这是一个很有名的猜想,由於n=5之后演算起来很麻烦,很少有人去验证它.
1732年,大数学家欧拉认真研究了这个问题,它发现费马只要再往下演算一个自然数,就会发现由这个公式得出的数不全是质数.
n=5时,==4294967297,4294967297可以分解为641×6700417,它不是质数.也就是说,费马的这个猜想不能成为一个求质数的公式.实际上几千年来,数学家们一直在寻找这样的一个公式,一个能求出所有质数的公式;但直到现在,谁也未能找到这样一个公式,而且谁也未能找到证据,说这样的公式就一定不存在;这样的公式存不存在,也就成了一个著名的数学难题.
费马在数学史上,是一位非常重要的人物,虽然费马的公式是错误的,但是数学家从另一个方向来寻找大质数,也就是之前讲完全数时提到的:『如果2-1是一个质数,那麼N=2(2-1)一定是个完全数.』於是,数学家们努力验算不同的 n值,也找出了一些质数,但是由於数字太大,当时又没有电脑的帮忙,所以很多结果都是错的.到了十七世纪,一位法国的天主教修士梅森尼提出了:在 n不大於257的情况下,共有十一个质数.虽然他的结果同样有不少错误,但是后人就把『2-1』这种形式的质数叫做『梅森尼质数』.」
费马定理
费马一心想要找出一个求质数的公式,结果未能成功.人们发现,倒是他无意提出的另一个猜想,对寻找质数很有用处.
费马猜测说;如果 是一个质数,那麼,对任何自然数n,( )一定能被 整除.这一回费马猜对了,这个猜想被人称作费马小定理.例如:11是质数,2是自然数,所以( )一定能被11整除.
利用费马定理,这是目前最有效的鉴定质数的方法.要判断一个数n是不是质数,首先看它能不能整除( ),如果不能整除,它一定是合数;如果能整除,它就"极可能"是质数.现在,在电子计算机上运用这种新方法,要鉴定一个上百位的数是不是质数,一般只要15秒钟就够了.
质数公式表
f(x)公式
在100以下令f(x)成合成数的x值
总数
x2-79+1601
80, 81, 84, 89, 96
5
x2+x+41
40,41,44,49, 56, 65, 76,81,82,84,87,89,91,96
14
2x2+29
29, 30, 32, 35, 39,44, 50, 57, 58, 61,63, 65,
25
72,74,76, 84,87, 88, 89,91,92,94,95, 97, 99
6x2+6x+31
29, 30, 31, 34, 36,41,44, 51, 55, 59, 61, 62,
25
64,66, 69,76,80, 84, 86. 87, 88, 92, 93, 97, 99
3x2+3x+23
22,23,27, 30, 38,43, 44,45,46,49, 51, 55, 56, 59,
28
62,66,68, 69,70,78, 85, 87, 88, 89, 91,92,95,96
像质数公式 x2+x+41,我们能找到连续 40 个(由 0 到 39)的质数,有没有一条质数公式 f=x2+x+b,能使 (b-1) 个连续 x 值使 f(x) 都是质数呢 有人曾用电算机去找,结果查出如果有,则 b 值一定要超过 1,250,000,000,而且最多只有一个.看来这个问题大概解不了.
现在的数学家们在质数这个领域里,有两个重要的研究方向:一个是利用各种更有效率的筛法,不断地往更大的数里面去搜寻质数;另外就是寻找新的『梅森尼质数』.到西元1996年为止,数学家已经藉由电脑运算,知道1020以内有多少质数了;另一方面,在西元1999年六月,数学家也发现了第三十八个『梅森尼质数』: 26972593-1,这同时也是到目前为止发现的最大质数!它是一个2098960位数.
❹ 求有关初等数论的所有知识```
初等数论
研究数的规律,特别是整数性质的数学分支。是数论的一个最古老的分支。它以算术方法为主要研究方法,主要内容有整数的整除理论、不定方程、同余式等。古希腊毕达哥拉斯是初等数论的先驱。他与他的学派致力于一些特殊整数(如亲和数、完全数、多边形数)及特殊不定方程的研究。公元前4世纪,欧几里德的《几何原本》通过102个命题,初步建立了整数的整除理论。他关于“素数有无穷多个”的证明,被认为是数学证明的典范。公元3世纪,丢番图研究了若干不定方程,并分别设计巧妙解法,故后人称不定方程为丢番图方程。17世纪以来,P.de费马、L.欧拉、C.F.高斯 等人的工作大大丰富和发展了初等数论的内容。中国古代对初等数论的研究有着光辉的成就,《周髀算经》、《孙子算经》、《张邱建算经》、《数书九章》等古文献上都有记载。孙子定理比欧洲早500年, 西方常称此定理为中国剩余定理,秦九韶的大衍求一术也驰名世界。初等数论不仅是研究纯数学的基础,也是许多学科的重要工具。它的应用是多方面的,如计算机科学、组合数学、密码学、信息论等。如公开密钥体制的提出是数论在密码学中的重要应用。
初等数论就是用初等、朴素的方法去研究数论。另外还有解析数论(用解析的方法研究数论。)、代数数论(用代数结构的方法研究数论)。
素数
数论刚开始的时候是用朴素的推理方法去研究整数的性质,又以素数最令人神往。古今不知道多少数学家都为了它而呕心沥血!研究素数的性质是数论中一个非常重要的方面!
所谓素数,就是一个正整数,它除了本身和 1 以外并没有任何其他因子。素数就好象是正整数的原子一样,著名的高斯「唯一分解定理」说,任何一个整数。可以写成一串质数相乘的积。但是至今仍然没有一个一般的特别使用的式子可以表示所有的素数。所以数论里关于素数的两个著名猜想非常困难:
1哥德巴赫猜想 :(Goldbach Conjecture)
内容为“所有的大于2的偶数,都可以表示为两个素数”
这个问题是德国数学家哥德巴赫(C.Goldbach,1690-1764)于1742年6月7日在给大数学家欧拉的信中提出的,所以被称作哥德巴赫猜想。同年6月30日,欧拉在回信中认为这个猜想可能是真的,但他无法证明。从此,这道数学难题引起了几乎所有数学家的注意。哥德巴赫猜想由此成为数学皇冠上一颗可望不可即的“明珠”。“用当代语言来叙述,哥德巴赫猜想有两个内容,第一部分叫做奇数的猜想,第二部分叫做偶数的猜想。奇数的猜想指出,任何一个大于等于7的奇数都是三个素数的和。偶数的猜想是说,大于等于4的偶数一定是两个素数的和。”(引自《哥德巴赫猜想与潘承洞》)
哥德巴赫猜想貌似简单,要证明它却着实不易,成为数学中一个著名的难题。18、19世纪,所有的数论专家对这个猜想的证明都没有作出实质性的推进,直到 20世纪才有所突破。直接证明哥德巴赫猜想不行,人们采取了“迂回战术”,就是先考虑把偶数表为两数之和,而每一个数又是若干素数之积。如果把命题"每一个大偶数可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b",那么哥氏猜想就是要证明"1+1"成立。
1900年,20世纪最伟大的数学家希尔伯特,在国际数学会议上把“哥德巴赫猜想”列为23个数学难题之一。此后,20世纪的数学家们在世界范围内“联手”进攻“哥德巴赫猜想”堡垒,终于取得了辉煌的成果。
到了20世纪20年代,有人开始向它靠近。1920年,挪威数学家布爵用一种古老的筛选法证明,得出了一个结论:每一个比6大的偶数都可以表示为(9+ 9)。这种缩小包围圈的办法很管用,科学家们于是从(9十9)开始,逐步减少每个数里所含质数因子的个数,直到最后使每个数里都是一个质数为止,这样就证明了“哥德巴赫猜想”。
1920年,挪威的布朗(Brun)证明了 “9+9 ”。
1924年,德国的拉特马赫(Rademacher)证明了“7+7 ”。
1932年,英国的埃斯特曼(Estermann)证明了 “6+6 ”。
1937年,意大利的蕾西(Ricei)先后证明了“5+7 ”, “4+9 ”, “3+15 ”和“2+366 ”。
1938年,苏联的布赫 夕太勃(Byxwrao)证明了“5+5 ”。
1940年,苏联的布赫 夕太勃(Byxwrao)证明了 “4+4 ”。
1948年,匈牙利的瑞尼(Renyi)证明了“1+c ”,其中c是一很大的自然数。
1956年,中国的王元证明了 “3+4 ”。
1957年,中国的王元先后证明了 “3+3 ”和 “2+3 ”。
1962年,中国的潘承洞和苏联的巴尔巴恩(BapoaH)证明了 “1+5 ”, 中国的王元证明了“1+4 ”。
1965年,苏联的布赫 夕太勃(Byxwrao)和小维诺格拉多夫(BHHopappB),及 意大利的朋比利(Bombieri)证明了“1+3 ”。
1966年,中国的陈景润证明了 “1+2 ”[用通俗的话说,就是大偶数=素数+素数*素数或大偶数=素数+素数(注:组成大偶数的素数不可能是偶素数,只能是奇素数。因为在素数中只有一个偶素数,那就是2。)]。
其中“s + t ”问题是指: s个质数的乘积 与t个质数的乘积之和
20世纪的数学家们研究哥德巴赫猜想所采用的主要方法,是筛法、圆法、密率法和三角和法等等高深的数学方法。解决这个猜想的思路,就像“缩小包围圈”一样,逐步逼近最后的结果。
由于陈景润的贡献,人类距离哥德巴赫猜想的最后结果“1+1”仅有一步之遥了。但为了实现这最后的一步,也许还要历经一个漫长的探索过程。有许多数学家认为,要想证明“1+1”,必须通过创造新的数学方法,以往的路很可能都是走不通的。
2孪生素数猜想:所谓孪生素数指的就是这种间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样。最小的孪生素数是 (3, 5),在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),总计有 8 组。但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。那么会不会在超过某个界限之后就再也不存在孪生素数了呢?
我们知道,素数本身的分布也是随着数字的增大而越来越稀疏,不过幸运的是早在古希腊时代,Euclid 就证明了素数有无穷多个 (否则今天许多数论学家就得另谋生路)。长期以来人们猜测孪生素数也有无穷多组,这就是与 Goldbach 猜想齐名、集令人惊异的简单表述和令人惊异的复杂证明于一身的著名猜想 - 孪生素数猜想:
存在无穷多个素数 p, 使得 p+2 也是素数。
究竟谁最早明确提出这一猜想我没有考证过,但是一八四九年法国数学 Alphonse de Polignac 提出猜想:对于任何偶数 2k, 存在无穷多组以 2k 为间隔的素数。对于 k=1,这就是孪生素数猜想,因此人们有时把 Alphonse de Polignac 作为孪生素数猜想的提出者。不同的 k 对应的素数对的命名也很有趣,k=1 我们已经知道叫做孪生素数, k=2 (即间隔为 4) 的素数对被称为 cousin prime (比 twin 远一点),而 k=3 (即间隔为 6) 的素数对竟然被称为 sexy prime (这回该相信 “书中自有颜如玉” 了)!不过别想歪了,之所以称为 sexy prime 其实是因为 sex 正好是拉丁文中的 6。:-)
孪生素数猜想还有一个更强的形式,由英国数学家 Hardy 和 Littlewood 于一九二三年提出,现在通常称为 Hardy-Littlewood 猜想或强孪生素数猜想[注一]。这一猜想不仅提出孪生素数有无穷多组,而且还给出其渐近分布形式为:
x
π2(x)~2C2∫dt/(lnt)^2
2
其中 π2(x) 表示小于 x 的孪生素数的数目, C2 被称为孪生素数常数 (twin prime constant),其数值为:
C2=∏P(P-2)/(p-1)^2≈0....
p≥3
Hardy-Littlewood 猜想所给出的孪生素数分布的精确程度可以由下表看出:
x 孪生素数数目 Hardy-Littlewood 猜想
100,000 1224 1249
1,000,000 8,169 8,248
10,000,000 58,980 58,754
100,000,000 440,312 440,368
10,000,000,000 27,412,679 27,411,417
很明显,Hardy-Littlewood 猜想的对孪生素数分布的拟合程度是惊人的。 如此精彩的拟合堪与自然科学史上 Adams 和 Leverrier 运用天体摄动规律对海王星位置的预言以及 Einstein 对光线引力偏转的预言相媲美,是理性思维的动人篇章。这种数据对于纯数学的证明虽没有实质的帮助,但是它大大增强了人们对孪生素数猜想的信心。
顺便说一下,Hardy-Littlewood 猜想所给出的孪生素数分布规律可以通过一个简单的定性分析 “得到”:我们知道素数定理 (prime number theorem) 表明对于足够大的 x, 在 x 附近素数的分布密度大约为 1/ln(x),因此两个素数处于区间 2 以内的概率大约为 2/ln2(x)。这几乎正好就是 Hardy-Littlewood 猜想中的被积函数!当然其中还差了一个孪生素数常数 C2,而这个常数很显然正是 Handy 与 Littlewood 的功力深厚之处!
除了 Hardy-Littlewood 猜想与孪生素数实际分布之间的拟合外,对孪生素数猜想的另一类 “实验” 支持来自于对越来越大的孪生素数的直接寻找。就象对于大素数的寻找一样,这种寻找在很大程度上成为对计算机运算能力的一种检验,一九九四年十月三十日,这种寻找竟然导致发现了 Intel Pentium 处理器浮点除法运算的一个 bug,在工程界引起了不小的震动。截至二零零二年底,人们发现的最大的孪生素数是:
(33218925×2169690-1, 33218925×2169690+1)
这对素数中的每一个都长达 51090 位!许多年来这种记录一直被持续而成功地刷新着。
好了,介绍了这么多关于孪生素数的资料,现在该说说人们在证明孪生素数猜想上所走过的路了。
迄今为止在证明孪生素数猜想上的成果大体可以分为两类。第一类是非估算性的结果,这一方面迄今最好的结果是一九六六年由已故的我国数学家陈景润 (顺便说一下,美国数学学会在介绍 Goldston 和 Yildirim 成果的简报中提到陈景润时所用的称呼是 “伟大的中国数学家陈”) 利用筛法 (sieve method) 所取得的。陈景润证明了:存在无穷多个素数 p, 使得 p+2 要么是素数,要么是两个素数的乘积。这个结果和他关于 Goldbach 猜想的结果很类似。目前一般认为,由于筛法本身的局限性,这一结果在筛法范围内很难被超越。
证明孪生素数猜想的另一类结果是估算性的,Goldston 和 Yildirim 所取得的结果也属于这一类。这类结果估算的是相邻素数之间的最小间隔,更确切地说是:
Δ := lim inf[(P(n+1)-Pn)/ln(Pn)]
n→∞
翻译成白话文,这个表达式定义的是两个相邻素数之间的间隔与其中较小的那个素数的对数值之比在整个素数集合中所取的最小值。很显然孪生素数猜想如果成立,那么 Δ 必须等于 0,因为孪生素数猜想表明 pn+1-pn=2 对无穷多个 n 成立,而 ln(pn)→∞,因此两者之比的最小值对于孪生素数集合 (从而对于整个素数集合也) 趋于零。不过要注意 Δ=0 只是孪生素数猜想成立的必要条件,而不是充份条件。换句话说如果能证明 Δ≠0 则孪生素数猜想就不成立,但证明 Δ=0 却并不意味着孪生素数猜想就一定成立。
对于 Δ 最简单的估算来自于素数定理。按照素数定理,对于足够大的 x, 在 x 附近素数出现的几率为 1/ln(x),这表明素数之间的平均间隔为 ln(x) (这也正是 Δ 的表达式中出现 ln(pn) 的原因),从而 (pn+1-pn)/ln(pn) 给出的其实是相邻素数之间的间隔与平均间隔的比值,其平均值显然为 1。平均值为 1,最小值显然是小于等于 1,因此素数定理给出 Δ≤1。
对 Δ 的进一步估算始于 Hardy 和 Littlewood。一九二六年,他们运用圆法 (circle method) 证明了假如广义 Riemann 猜想成立,则 Δ≤2/3。这一结果后来被被 Rankin 改进为 Δ≤3/5。但是这两个结果都有赖于本身尚未得到证明的广义 Riemann 猜想,因此只能算是有条件的结果。一九四零年,Erdös 利用筛法首先给出了一个不带条件的结果:Δ<1 (即把素数定理给出的结果中的等号部分去掉了)。此后 Ricci 于一九五五年, Bombieri 和 Davenport 于一九六六年,Huxley 于一九七七年, 分别把这一结果推进到 Δ≤15/16, Δ≤(2+√3)/8≈0.4665 及 Δ≤0.4425。 Goldston 和 Yildirim 之前最好的结果是 Maier 在一九八六年取得的 Δ≤0.2486。
以上这些结果都是在小数点后做文章, Goldston 和 Yildirim 的结果把这一系列的努力大大推进了一步,并且 - 如果得到证实的话 - 将在一定意义上终结对 Δ 进行数值估算的长达几十年的征途,因为 Goldston 和 Yildirim 证明了 Δ=0。当然如我们前面所说,Δ=0 只是孪生素数猜想成立的必要条件,而非充份条件,因此 Goldston 和 Yildirim 的结果离最终证明孪生素数猜想还远得很,但它无疑是近十几年来这一领域中最引人注目的结果。
一旦 Δ=0 被证明,人们的注意力自然就转到了研究 Δ 趋于 0 的方式上来。孪生素数猜想要求 Δ ~ [log(pn)]-1 (因为 pn+1-pn=2 对无穷多个 n 成立)。 Goldston 和 Yildirim 的证明给出的是 Δ ~ [log(pn)]-1/9,两者之间还有相当距离。但是看过 Goldston 和 Yildirim 手稿的一些数学家认为 Goldston 和 Yildirim 所用的方法明显存在改进的空间,也就是说对 Δ 趋于 0 的方式可以给出更强的估计。因此 Goldston 和 Yildirim 的证明其价值不仅仅在于结果本身,更在于它很有可能成为未来一系列研究的起点。这种系列研究对于数学来说有着双重的价值,因为一方面这种研究所获得的新结果是对数学的直接贡献,另一方面这种研究对 Goldston 和 Yildirim 的证明会起到反复推敲和核实的作用。现代数学早已超越了一两个评审花一两个小时就可以对一个数学证明做出评判的时代。以前四色定理和 Fermat 大定理都曾有过一个证明时隔几年 (甚至十几年) 才被发现错误的例子。因此一个复杂的数学结果能够成为进一步研究的起点,吸引其它数学家的参与对于最终判定该结果的正确性具有极其正面的意义。
这两个猜想还一直在吸引着数学家们!
有无穷多个素数
这个古老的命题最初是由古希腊数学家欧几里德(Euclid of Alexandria,生活在亚历山大城,约前330~约前275,是古希腊最享有盛名的数学家)在他的不朽著作《几何原本》里给出的一个反证法:
假设命题不真,则只有有限多个素数,设所有的素数是2=a1<a2<……<an.
此时,令N=a1*a2*……*an+1,那么所有的ai(i=1,2,……,n)显然都不是N的因子,那么有两个可能:或者N有另外的素数真因子,或者N本身就是一个素数,但是显然有N>ai(i=1,2……n).无论是哪种情况,都将和假设矛盾。这个矛盾就完成了我们的证明,所以确实有无穷多个素数!
这个证明简短而又有力,充分体现了证明者的智慧,也体现出数学的概括性和美丽!
其实,后人还发现了很多方法去证明这个命题,例如:用费马数(Fn=2^(2^n)+1)可以给出一个证明,但是都不如欧几里德的证明简单,所以人们比较熟悉的就是这个证明。
费马(Fermat):数论大师
费马在数论领域中的成果是巨大的,其中主要有:(费马大定理 、费马小定理)
费马大定理:n>2是整数,则方程x^n+y^n=z^n没有满足xyz≠0的整数解。这个是不定方程,它已经由美国数学家证明了(1995年),证明的过程是相当艰深的!
费马小定理:a^p-a≡0(mod p),其中p是一个素数,a是正整数,它的证明比较简单。事实上它是Euler定理的一个特殊情况,Euler定理是说:a^φ(n)-1≡0(mod n),a,n都是正整数,φ(n)是Euler函数,表示和n互素的小于n的正整数的个数(它的表达式欧拉已经得出,可以在“Euler公式"这个词条里找到)。
(1)全部素数可分为4n+1和4n+3两种形式。
(2)形如4n+1的素数能够,而且只能够以一种方式表为两个平方数之和。
(3)没有一个形如4n+3的素数,能表示为两个平方数之和。
(4)形如4n+1的素数能够且只能够作为一个直角边为整数的直角三角形的斜边;4n+1的平方是且只能是两个这种直角三角形的斜边;类似地,4n+1的m次方是且只能是m个这种直角三角形的斜边。
(5)边长为有理数的直角三角形的面积不可能是一个平方数。
(6)4n+1形的素数与它的平方都只能以一种方式表达为两个平方数之和;它的3次和4次方都只能以两种表达为两个平方数之和;5次和6次方都只能以3种方式表达为两个平方数之和,以此类推,直至无穷。
(7)发现了第二对亲和数:17296和18416。
❺ 如何知道一个很大的数是不是素数
高速判断用 miller-rabin算法或者 aks 算法
1.约定x%y为x取模y,即x除以y所得的余数,当x<y时,x%y=x,所有取模的运算对象都为整数。
x^y表示x的y次方。乘方运算的优先级高于乘除和取模,加减的优先级最低。
见到x^y/z这样,就先算乘方,再算除法。
A/B,称为A除以B,也称为B除A。
若A%B=0,即称为A可以被B整除,也称B可以整除A。
A*B表示A乘以B或称A乘B,B乘A,B乘以A……都一样。
有N为任意正整数,P为素数,且N不能被P整除(显然N和P互质),则有:N^P%P=N(即:N的P次方除以P的余数是N)。
但是我查了很多资料见到的公式都是这个样子:
(N^(P-1))%P=1后来分析了一下,两个式子其实是一样的,可以互相变形得到。
原式可化为:(N^P-N)%P=0(即:N的P次方减N可以被P整除,因为由费马小定理知道N的P次方除以P的余数是N)把N提出来一个,N^P就成了你N*(N^(P-1)),那么(N^P-N)%P=0可化为:
(N*(N^(P-1)-1))%P=0
请注意上式,含义是:N*(N^(P-1)-1)可以被P整除
又因为N*(N^(P-1)-1)必能整除N(这不费话么!)
所以,N*(N^(P-1)-1)是N和P的公倍数,小学知识了^_^
又因为前提是N与P互质,而互质数的最小公倍数为它们的乘积,所以一定存在
正整数M使得等式成立:N*(N^(P-1)-1)=M*N*P
两边约去N,化简之:N^(P-1)-1=M*P
因为M是整数,显然:N^(P-1)-1)%P=0即:N^(P-1)%P=1
有N为任意正整数,P为素数,且N不能被P整除(显然N和P互质),则有:N^P%P=N(即:N的P次方除以P的余数是N)。
但是我查了很多资料见到的公式都是这个样子:
(N^(P-1))%P=1后来分析了一下,两个式子其实是一样的,可以互相变形得到。
原式可化为:(N^P-N)%P=0(即:N的P次方减N可以被P整除,因为由费马小定理知道N的P次方除以P的余数是N)把N提出来一个,N^P就成了你N*(N^(P-1)),那么(N^P-N)%P=0可化为:
(N*(N^(P-1)-1))%P=0
请注意上式,含义是:N*(N^(P-1)-1)可以被P整除
又因为N*(N^(P-1)-1)必能整除N(这不费话么!)
所以,N*(N^(P-1)-1)是N和P的公倍数,小学知识了^_^
又因为前提是N与P互质,而互质数的最小公倍数为它们的乘积,所以一定存在
正整数M使得等式成立:N*(N^(P-1)-1)=M*N*P
两边约去N,化简之:N^(P-1)-1=M*P
因为M是整数,显然:N^(P-1)-1)%P=0即:N^(P-1)%P=1
有N为任意正整数,P为素数,且N不能被P整除(显然N和P互质),则有:N^P%P=N(即:N的P次方除以P的余数是N)。
但是我查了很多资料见到的公式都是这个样子:
(N^(P-1))%P=1后来分析了一下,两个式子其实是一样的,可以互相变形得到。
原式可化为:(N^P-N)%P=0(即:N的P次方减N可以被P整除,因为由费马小定理知道N的P次方除以P的余数是N)把N提出来一个,N^P就成了你N*(N^(P-1)),那么(N^P-N)%P=0可化为:
(N*(N^(P-1)-1))%P=0
请注意上式,含义是:N*(N^(P-1)-1)可以被P整除
又因为N*(N^(P-1)-1)必能整除N(这不费话么!)
所以,N*(N^(P-1)-1)是N和P的公倍数,小学知识了^_^
又因为前提是N与P互质,而互质数的最小公倍数为它们的乘积,所以一定存在
正整数M使得等式成立:N*(N^(P-1)-1)=M*N*P
两边约去N,化简之:N^(P-1)-1=M*P
因为M是整数,显然:N^(P-1)-1)%P=0即:N^(P-1)%P=1
先有一个引理,如果有:X%Z=0,即X能被Z整除,则有:(X+Y)%Z=Y%Z
设有X、Y和Z三个正整数,则必有:(X*Y)%Z=((X%Z)*(Y%Z))%Z
想了很长时间才证出来,要分情况讨论才行:
1.当X和Y都比Z大时,必有整数A和B使下面的等式成立:
X=Z*I+A(1)
Y=Z*J+B(2)
不用多说了吧,这是除模运算的性质!
将(1)和(2)代入(X*Y)modZ得:((Z*I+A)(Z*J+B))%Z乘开,再把前三项的Z提一个出来,变形为:(Z*(Z*I*J+I*A+I*B)+A*B)%Z(3)
因为Z*(Z*I*J+I*A+I*B)是Z的整数倍……晕,又来了。
概据引理,(3)式可化简为:(A*B)%Z又因为:A=X%Z,B=Y%Z,代入上面的式子,就成了原式了。
2.当X比Z大而Y比Z小时,一样的转化:
X=Z*I+A
代入(X*Y)%Z得:
(Z*I*Y+A*Y)%Z
根据引理,转化得:(A*Y)%Z
因为A=X%Z,又因为Y=Y%Z,代入上式,即得到原式。
同理,当X比Z小而Y比Z大时,原式也成立。
3.当X比Z小,且Y也比Z小时,X=X%Z,Y=Y%Z,所以原式成立。
=====================================================
如计算2^13,则传统做法需要进行12次乘法。
[cpp] view plainprint?该死的乘法,是时候优化一下了!把2*2的结果保存起来看看,是不是成了:
4*4*4*4*4*4*2
再把4*4的结果保存起来:16*16*16*2
一共5次运算,分别是2*2、4*4和16*16*16*2
这样分析,我们算法因该是只需要计算一半都不到的乘法了。
为了讲清这个算法,再举一个例子2^7:2*2*2*2*2*2*2
两两分开:(2*2)*(2*2)*(2*2)*2
如果用2*2来计算,那么指数就可以除以2了,不过剩了一个,稍后再单独乘上它。
再次两两分开,指数除以2: ((2*2)*(2*2))*(2*2)*2
实际上最后一个括号里的2 * 2是这回又剩下的,那么,稍后再单独乘上它 现在指数已经为1了,可以计算最终结果了:16*4*2=128
❻ 用费马小定理是怎样快速求出余数
这个定理逆命题似乎不成立,没办法判断质数。
❼ 费马小定理有什么用
可以编排数字密码,还可以判断一个数是否为复合数。
❽ 判定素数(不是那种弱智算法傻子都会,我想问用费马小定理或欧拉函数解的算法)
你好:
素数判定是一个不容易的事情。对小的素数,可准确判定,对较大的数,就不容易。很难肯定或否定某个大数是素数。
在工程方面,常见的做法是概率判定,就是利用费马小定理做多次测试,如果都符合,就有很大概率是素数了。如果有一次不符合,即可得出否定结论。
现在还没听说多项式时间内的准确判定算法,即使AKS算法,也只是对较小的数字可行,较大数字的情况,因运算力量太大而不可行。
这样说,是否表达明白?
❾ RSA-100 代表什么
它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi
Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。
RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100
个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。
密钥对的产生。选择两个大素数,p 和q 。计算:
n = p * q
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用 Euclid 算法计算解密密钥d,满足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互质。数e和 n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。
加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s ,其中 <= n, s 尽可能的
大。对应的密文是:
ci = mi^e ( mod n ) ( a )
解密时作如下计算:
mi =ci^d ( mod n ) ( b )
RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。具体操作时考虑到安全性和 m信息量较大等因素,一般是先作 HASH 运算。
RSA 的安全性。 RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解
RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA
的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n
必须选大一些,因具体适用情况而定。
RSA的速度。
由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。
RSA的选择密文攻击。 RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装( Blind),让拥
有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:
( XM )^d = X^d *M^d mod n
前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way
HashFunction 对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法。
RSA的公共模数攻击。
若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:
C1 = P^e1 mod n
C2 = P^e2 mod n
密码分析者知道n、e1、e2、C1和C2,就能得到P。 因为e1和e2互质,故用Euclidean算法能找到r和s,满足:
r * e1 + s * e2 = 1
假设r为负数,需再用Euclidean算法计算C1^(-1),则
( C1^(-1) )^(-r) * C2^s = P mod n
另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。
RSA的小指数攻击。 有一种提高 RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有
所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。
RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits
以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(
Secure Electronic Transaction )协议中要求CA采用比特长的密钥,其他实体使用比特的密钥
首先,找出三个数,其中p,q是两个相异的质数,r是与(p-1)(q-1)互质的数这三个数便是privatekey
接著,找出m,使得rm==1mod(p-1)(q-1)这个m一定存在,因为r与(p-1)(q-1)互质,用辗转相除法就可以得到了再来,计算n=pqm,n这两个数便是publickey编码过程是,若资料为a,将其看成是一个大整数,假设a<n如果a>=n的话,就将a表成s进位(s<=n,通常取s=2^t),则每一位数均小於n,然后分段编码接下来,计算b==a^mmodn,(0<=b<n),b就是编码后的资料解码的过程是,计算c==b^rmodpq(0<=c<pq),於是乎,解码完毕等会会证明c和a其实是相等的
如果第三者进行窃听时,他会得到几个数:m,n(=pq),b他如果要解码的话,必须想办法得到r所以,他必须先对n作质因数分解要防止他分解,最有效的方法是找两个非常的大质数p,q,使第三者作因数分解时发生困难
<定理>
若p,q是相异质数,rm==1mod(p-1)(q-1),a是任意一个正整数b==a^mmodpq,c==b^rmodpq,
则c==amodpq
证明的过程,会用到费马小定理,叙述如下:
m是任一质数,n是任一整数,则n^m==nmodm 换另一句话说,如果n和m互质,则n^(m-1)==1modm)
运用一些基本的群论的知识,就可以很容易地证出费马小定理的 ><证明>
因为rm==1mod(p-1)(q-1),所以rm=k(p-1)(q-1)+1,其中k是整数,因为在molo中是preserve乘法的x==ymodzan==vmodz=>xu==yvmodz),
所以,c==b^r==(a^m)^r==a^(rm)==a^(k(p-1)(q-1)+1)modpq
1.如果a不是p的倍数,也不是q的倍数时,则a^(p-1)==1modp(费马小定理)=>a^(k(p-1)(q-1))==1modp,a^(q-1)==1modq(费马小定理)=>a^(k(p-1)(q-1))==1modq
所以p,q均能整除a^(k(p-1)(q-1))-1=>pq|a^(k(p-1)(q-1))-1,即a^(k(p-1)(q-1))==1modpq
=>c==a^(k(p-1)(q-1)+1)==amodpq
2.如果a是p的倍数,但不是q的倍数时,则a^(q-1)==1modq(费马小定理)
=>a^(k(p-1)(q-1))==1modq=>c==a^(k(p-1)(q-1)+1)==amodq=>q|c-a
因p|a
=>c==a^(k(p-1)(q-1)+1)==0modp
=>p|c-a所以,pq|c-a=>c==amodpq
3.如果a是q的倍数,但不是p的倍数时,证明同上
4.如果a同时是p和q的倍数时,则pq|a=>c==a^(k(p-1)(q-1)+1)==0modpq>pq|c-a
=>c==amodpq
Q.E.D.
这个定理说明a经过编码为b再经过解码为c时,a==cmodn(n=pq)....
但我们在做编码解码时,限制0<=a<n,0<=c<n,
所以这就是说a等於c,所以这个过程确实能做到编码解码的功能
还有一些事值得探讨的
首先是质数的选取
上一篇提到为了使因数分解发生困难, 所选择的质数要愈大愈好,但这也意味著, 质数的选取也同样的困难因为就目前而言,
跟本没有一个所谓的质数产生公式可用
解析数论上有一个定理, 当 p 很大时, 质数的分布密度与 1/log p 成正比,也就是说一个质数和下一个质数的差平均而言与 log p
成正比还好 log p 的成长并不会很快, 所以就采用一个方法 --- 暴力搜寻法一个数接著一个数找 直到找到质数为止.
即使 n 大到 2^512, 所要花的时间也不会大到天文数字,用 486 的话, 大概在数秒钟至数十秒之内会找到 (包括判定的时间).
现在有一个问题了 如何去判定一个数是否是质数,因为到目前为止, 并没有一个很有效的方法来判定,当然有人会问, 为什麽不用试除法.嗯 如果用这个方法,
2^512 这麽大的数, 大概要除个大於 10^30 年.虽然如此, 但还是得去判断啊
有一个方法, 是利用费马小定理去做判定的.假设一数 p, 如果 p 是质数, a^p == a mod p,如果 p 不是质数, 那麽 a^p ==
a mod p 虽然也有可能成立,但成立的机率非常小, 而且 p 愈大时机率愈小。用这种方法, 我们就找一些质数来测定, 比如验证。2^p == 2
mod p, 3^p == 3 mod p, 5^p == 5 mod p 等式是否成立,如此一来, p 是质数的机率就变得非常非常高了
现在来讨论 RSA 演算法编码解码的速度
因为我们是对一些很大的数作计算,所以, 一些加减乘除的运算, 必须自己写成函式来处理这些事就 N-digit key 的资料而言, 加减法需要
O(N) 的时间, 乘除法需要 O(N^2) 的时间至於计算 a^b mod c, 则是需要 O(N^3) 的时间, 亦即, 要对 N-digit
的资料用 N-digit key 作编码解码, 是需要 O(N^3) 的时间一般的实作, N 是介於 512 至 1024 之间,
(太小的话很有可能被因数分解开) 所以算算 N^3, 其计算量也是相当惊人的这意味著, 用 RSA 演算法来编码解码其速度是非常慢的 既然 RSA
的速度很慢, 这就表示它并不适合所有情况..... 比如 ftp, 这就不适合全程使用 RSA 作编码解码
如何去改善速度? 还记得之前所提到的 DES 吧? RSA 搭配上 DES 的话, 就可以弥补编码解码时速度太慢的问题了 先前提到用 DES
作编码解码时, 双方必须使用同一个 key所以, 我们可以用 RSA 演算法将 DES key 送给对方, 而后接下来的资料, 就全部利用 DES
来做编码解码, 如此, 整个过程中, 因使用 RSA 而耗掉的时间就不会太多 再者, 产生 RSA key 所耗掉的时间, 也是相当惊人的先前提到,
以 N-digit key 为例, 两个相邻质数平均间隔为 O(N), 对於这些数, 我们要利用费马小定理去判定是否可能为质数, 而计算 a^b
mod c 所花的时间为 O(N^3), 所以算一算, 平均要找到一个 N-digit 质数, 需费时 O(N^4)所以在产生 RSA key
时也是一件非常耗时的工作所以, 一般的作法是, 先花一大把时间去找 RSA key, 往后的编码解码就使用这一组 key 就以
stand-alone telnet daemon 为例好了, 可行的做法是 telnetd 一开始执行时, 先花时间运算出 RSA key, 之后
telnet 连上这个 telnetd 之后, 丢给 telnet 这个 RSA key (public), 然后 telnet 将 DES key
用这个 RSA key 编码丢后回给 telnetd, 之后的通讯就用这个 DES key 作编码解码