分析高斯整数的好方法是什么?

时间:2010-02-16 00:04:38

标签: algorithm math complex-numbers prime-factoring number-theory

我已经有了素数因子化(对于整数),但是现在我想用高斯整数来实现它,但是我应该怎么做呢?谢谢!

2 个答案:

答案 0 :(得分:68)

答案 1 :(得分:0)

如果您想要完整的单个单元格整数精度,请使用浮点作为实部和虚部,并定义gsub,gmul和具有舍入系数但未被覆盖的特殊除法gdivr。这是因为Pollard rho分解方法需要通过Euclid算法的gcd,稍微修改一下gmodulo:

gmodulo((x,y),(x',y'))=gsub((x,y),gmul((x',y'),gdivr((x,y),(x',y'))))

Pollard rho

def poly((a,b),(x,y))=gmodulo(gsub(gmul((a,b),(a,b)),(1,0)),(x,y))

input (x,y),(a,b) % (x,y) is the Gaussian number to be factorized
(c,d)<-(a,b)
do 
   (a,b)=poly((a,b),(x,y))
   (c,d)=poly(poly((c,d),(x,y)),(x,y))
   (e,f)=ggcd((x,y),gsub((a,b),(c,d)))
   if (e,f)=(x,y) then return (x,y) % failure, try other (a,b)
until e^2+f^2>1
return (e,f)

正常起始值是a = 1,b = 0。

我在我的博客http://forthmath.blogspot.se

上使用了Forth编程的这种方法

为安全起见,在使用整数浮点数时,在所有计算中使用舍入值。