今天才知道原来还有个查找算法叫:Fibonacci查找,是以Fibonacci数列为基础的一种查找算法
收录部分资料如下:
http://en.wikipedia.org/wiki/Fibonacci_search_technique
http://zh.wikipedia.org/zh/斐波那契数列
http://www.cnblogs.com/xiaosuo/archive/2010/04/07/1687231.html
http://hi.baidu.com/fcstom/blog/item/3c5b9c13a2917859f819b8a5.html
费马小定理是数论中的一个定理:假如a是一个整数,p是一个素数,那么
如果a不是p的倍数,这个定理也可以写成
根据费马小定理,对于两个互质的素数N和P,必有:N^(P-1)%P=1
素数检测:对于给定的整数n,随机取一个a<n并计算出a^n取模n的余数。如果得到的结果不等于a,那么a就肯定不是素数。如果结果是a,那么n是素数的机会就很大,但也可能不是,因为有基于Carmichael数的稀有特性。费马小定理有另一种形式:如果p是素数,那么对于比p小的正整数a,a^(p-1) mod p = 1。这个性质是Carmichael数不具备的,只有和Carmichael数p互质的a才满足a^(p-1) mod p = 1。这意味着我们可以改进用费马小定理判断素数的算法,计算a^(p-1) mod p而不是a^p mod p,判断结果是不是等于1。当然得出p是素数但是判断错误的可能性仍然存在。现在就再取一个随机的a并采用同样的方式检查。如果同样满足条件,那么n是素数的可能就更大。通常测试的次数越多越准。这一算法就是费马检查。
参考:
Harold Abelson 《计算机程序的构造和解释(第2版 )》 机械工业出版社
http://www.cnblogs.com/knuth/archive/2009/09/04/1559949.html
http://rimerandzerah.spaces.live.com/blog/cns!fbc88b2a60495c5e!149.entry?sa=100108712
题目:
下过中国象棋的朋友都知道,双方的“将”和“帅”相隔遥远,并且它们不能照面。在象棋残局中,许多高手能利用这一规则走出精妙的杀招。假设棋盘上只有“将”和“帅”二子(如下图所示)(为了下面叙述方便,我们约定用A表示“将”,B表示“帅”):
阅读全文 《编程之美》 之 将帅问题