Fibonacci查找

今天才知道原来还有个查找算法叫: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

What is a good optimization algorithm? A data-driven method for algorithm selection(十大算法)

 

阅读全文 What is a good optimization algorithm? A data-driven method for algorithm selection(十大算法)

《编程之美》 之 将帅问题

题目:

   下过中国象棋的朋友都知道,双方的“将”和“帅”相隔遥远,并且它们不能照面。在象棋残局中,许多高手能利用这一规则走出精妙的杀招。假设棋盘上只有“将”和“帅”二子(如下图所示)(为了下面叙述方便,我们约定用A表示“将”,B表示“帅”):

阅读全文 《编程之美》 之 将帅问题