摘要: 如题,这个主要是对于大整数(比如200位的十进制数),而且能够以很高的概率得到正确的判断比如下面这个程序判断10000以内的素数,正确率达到98.95%因为素性测试目前貌似没有有效的确定性算法(所谓有效,应该是指判断n是否为素数,花费时间T是n的位数的多项式),所以这个概率算法很有用用概率算法是不是始终不放心?虽然错误概率很小,毕竟还是存在啊。实际上,当算法的错误概率小于机器的硬件出错的概率时,这就不是问题了(是的,硬件也会出错的,而且你的程序运行时间越长,出错概率越大)关于这个算法,算法导论上也有讲,可以到那里了解算法的原理(偷个懒- -)//MillerRabin素性测试,概率算法//n 阅读全文
posted @ 2013-01-07 17:53 ttang 阅读(2173) 评论(0) 推荐(0)
摘要: #define min(a,b) ((a) < (b) ? (a) : (b))#define max(a,b) ((a) > (b) ? (a) : (b)) 我常常会用这两个宏,一般来说,宏比函数更高效,但是如果里面元素是函数的话,就不是这样。因为宏只是在编译预处理阶段执行简单替换,如果你有两个函数f和g,代码中写了min(f(a),g(a)),那么就会被展开为((f(a)) < (g(a)) ? (f(a)) : (g(a))),这是4次调用,而不是想象中的先算f(a),再算g(a),然后传给min——那是函数的行为,不是宏! 如果f和g是递归函数的话,结果更糟糕 实际 阅读全文
posted @ 2013-01-07 14:54 ttang 阅读(6917) 评论(0) 推荐(1)