Rabin-Miller概率素数检验算法
来源:互联网 发布:什么是事件驱动编程 编辑:程序博客网 时间:2024/06/05 08:13
一个应用非常普遍的素数检测算法:
我的实现:
(defun expmod (base exp modulo)
(if (= exp 0)
1
(if (evenp exp)
(mod (expt (expmod base (/ exp 2) modulo) 2) modulo)
(mod (* base (expmod base (- exp 1) modulo)) modulo))))
(defun initial (N)
(let ((s 0)(n (- N 1)))
(loop while (= (mod n 2) 0) do
(incf s)
(setf n (/ n 2)))
(list n s)))
(defun Rabin-Miller-once (n)
(let ((a (+ 1 (random n)))
(d (first (initial n)))
(s (second (initial n)))
(flag nil))
(if (= a n) (setf a (- a 1)))
(if (= 1 (expmod a d n))
(setf flag T)
(loop for k from 2 do
(setf d (* 2 d))
(if (or (= (- n 1) (expmod a d n)) (= 1 (expmod a d n)))
(progn (setf flag (not flag)) (return))
(if (> k s)
(return)))))
flag))
(defun Rabin-Miller (n c)
(let ((a nil))
(dotimes (i c)
(if (not (Rabin-Miller-once n))
(progn (setf a (not a)) (return))))
(not a)))
- Rabin-Miller概率素数检验算法
- Miller-Rabin概率素数测试算法
- Miller Rabin 概率算法测试素数(强伪素数)
- 【素数算法】Rabin-Miller算法
- Rabin -Miller算法判定素数
- 判断素数 Miller-Rabin 算法
- Miller-Rabin素数检测算法
- java实现快速生成大素数,并用Miller-Rabin算法检验
- 素数测试算法-Miller-Rabin算法
- 算法基础 - 素数判定(Miller-Rabin算法)
- 无聊,用Rabin-Miller算法算算素数
- C++:Miller-Rabin素数(质数)检测算法
- Miller-Rabin算法 求是不是素数
- 大素数测试的Miller-Rabin算法
- HDU2138 随机素数测试 Miller-Rabin算法
- Miller-Rabin素数检测算法笔记
- 素数判定——Miller Rabin 算法
- 【bzoj3667】Rabin-Miller算法 素数测试
- 对Objective-c委托的理解
- 1. objC 动态类型(dynamic typing)
- 有向图基本算法 -- 遍历算法
- 编程心得
- 自定制VS插件(一)--LearnVSXNow! - #1: 如何开始VS扩展包(VSX/VS SDK)的编程?
- Rabin-Miller概率素数检验算法
- C++编程必备
- Hello, MYSQL FULLTEXT SEARCH
- HDU 4262 Juggler (模拟+线段树优化)
- Unity3d制作简单拼图游戏
- iOS开发网络篇之:ASIHTTPRequest流量监控
- 自定制VS插件(二)--LearnVSXNow!-#2 创建一个空的VS Package
- ZOJ 1622 Switch
- 当程序崩溃的时候怎么办 iphone IOS