java – Pollard rho整数分解
作者:互联网
我试图在C/C++中实现Pollard Rho整数分解.Google给了我一个问题here的Java实现.
我不太了解Java,所以我想出了this.我在C中的实现适用于大多数情况但不是很少像“9999”,我在那里使用.
我知道C没有Biginteger类,所以我不能拥有它在JAVA中提供的全部功能,但是我想要分解15位数字,这对于无符号长整数是足够的
请指出我的实施中有什么问题.
解决方法:
问题就在这里:
#define abs(x) (x>0)?(x):(-x)
你在abs宏中遗漏了一些括号.尝试:
#define abs(x) ((x)>0 ? (x) : -(x))
代替. (考虑在x-xx <= 0的情况下扩展abs(x-xx)时会发生什么) 另外,为什么你的gcd函数返回一个int而不是一个BigInteger? 您还应该知道(假设无符号长long是64位整数类型),如果大于2 **的N,此代码将无法正常工作:如果x(或xx)大于或等于2 ** 32然后x * x将包装modulo 2 ** 64,为x * x%N提供错误的值.
标签:java,c-2,math,c-3,factorization 来源: https://codeday.me/bug/20190717/1484734.html