C
cmdline
Unregistered / Unconfirmed
GUEST, unregistred user!
今天看了一个关于整数分解的数学公式
公式如下:
n=x^2-y^2=(x-y)(x+y);
原理:任何一个整数都可以写成如上的公式
也就是说传统的分解整数的方法是:
for i:=1 to Sqrtdo
if n mod i then
........//执行代码
传统的方法在面对大整数时,比较慢
而采用n=x^2-y^2=(x-y)(x+y);比较快
思路是这样的:
for i:=1 to Sqrtdo
x:=Sqrt+i;
y:=sqrt((x2+i)-n);
if y是整数 then
break;
分解出来的两个数为(x-y)和(x+y),只要继续这样判断下去,就可以分解出所有的因子
但是,在程序中该怎麽实现?自己考虑了半天,也没有结果。
自己开始考虑的是递归,后面考虑的是多线程,感觉都不行。
整个感觉这个解下去的方法应该是个2叉树,可是自己对数据结构不太清楚
恳请高手给个完整的源代码或者思路(自己已经只有这点分了)
公式如下:
n=x^2-y^2=(x-y)(x+y);
原理:任何一个整数都可以写成如上的公式
也就是说传统的分解整数的方法是:
for i:=1 to Sqrtdo
if n mod i then
........//执行代码
传统的方法在面对大整数时,比较慢
而采用n=x^2-y^2=(x-y)(x+y);比较快
思路是这样的:
for i:=1 to Sqrtdo
x:=Sqrt+i;
y:=sqrt((x2+i)-n);
if y是整数 then
break;
分解出来的两个数为(x-y)和(x+y),只要继续这样判断下去,就可以分解出所有的因子
但是,在程序中该怎麽实现?自己考虑了半天,也没有结果。
自己开始考虑的是递归,后面考虑的是多线程,感觉都不行。
整个感觉这个解下去的方法应该是个2叉树,可是自己对数据结构不太清楚
恳请高手给个完整的源代码或者思路(自己已经只有这点分了)