Jacobi符号计算的一种实现
2012-08-26 12:15
931 查看
Jacobi符号是Legendre符号的推广,在素性检验以及因子分解等诸多方面极为有用,所以先写一个备着,写其他算法时方便直接调用。
(defun jacobi (n m)
(let ((e 0)
(a1 0)(a n)
(s 0)(b m)
(n1 0))
(cond ((= a 0) 0)
((= a 1) 1)
(t
(if (/= 0 (mod a 2)) (progn (setf a1 a) (setf e 0))
(loop while (= 0 (mod a 2)) do
(setf a (/ a 2)) (setf a1 a) (incf e)))
(cond ((= 0 (mod e 2)) (setf s 1))
((or (= 1 (mod b 8)) (= 7 (mod b 8)))
(setf s 1))
((or (= 3 (mod b 8)) (= 5 (mod b 8)))
(setf s -1)))
(if (and (= 3 (mod b 4)) (= 3 (mod a1 4))) (setf s (- 0 s)))
(setf n1 (mod b a1))
(if (= 1 a1)
s
(* s (jacobi n1 a1)))))))
(defun jacobi (n m)
(let ((e 0)
(a1 0)(a n)
(s 0)(b m)
(n1 0))
(cond ((= a 0) 0)
((= a 1) 1)
(t
(if (/= 0 (mod a 2)) (progn (setf a1 a) (setf e 0))
(loop while (= 0 (mod a 2)) do
(setf a (/ a 2)) (setf a1 a) (incf e)))
(cond ((= 0 (mod e 2)) (setf s 1))
((or (= 1 (mod b 8)) (= 7 (mod b 8)))
(setf s 1))
((or (= 3 (mod b 8)) (= 5 (mod b 8)))
(setf s -1)))
(if (and (= 3 (mod b 4)) (= 3 (mod a1 4))) (setf s (- 0 s)))
(setf n1 (mod b a1))
(if (= 1 a1)
s
(* s (jacobi n1 a1)))))))
相关文章推荐
- 无符号整形压缩与解压缩的一种实现
- 一种计算MD5的实现方法
- 给定n个矩阵{A1, A2, …,An},其中,Ai与Ai+1是可乘的,计算这n个矩阵的连乘积。从中找出一种乘次数最少的计算次序(矩阵连乘最优顺序Java语言实现
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
- Mathcad 是一种工程计算软件,主要运算功能:代数运算、线性代数、微积分、符号计算、2D和3D图表、动画、函数、程序编写、逻辑运算、变量与单位的定义和计算等。
- Mathcad 是一种工程计算软件,主要运算功能:代数运算、线性代数、微积分、符号计算、2D和3D图表、动画、函数、程序编写、逻辑运算、变量与单位的定义和计算等。
- 用了一种以前没用过的方法来实现计算24点
- ss素性检验实现与雅克比符号计算
- R---用于统计计算和统计制图的优秀工具,S 语言的一种实现
- 用c#来实现一种行列式的计算优化
- 用c#来实现一种行列式的计算优化
- Leaves -- iOS上一种图书翻页效果的实现
- ios 利用自带的CoreLocation.framework 实现获取手机当前处于的精度和纬度 并计算两点之间的间距(特别使用于团购,附近商户之类的项目)
- PHP 实现后缀表达式(接受四则运算字符串,输出计算结果,附代码)
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- iOS 用UITextView实现UITextField的多行显示效果 并计算输入剩余数
- 利用hadoop命令rcc生成Record 一种简单的方式实现自定义的writable对象
- key-value数据库的一种实现
- 智能指针的一种实现
- C++实现龙贝格计算积分