我在编写不使用小数的计算器(仅支持有理数),但是我希望能够做平方根的版本。

当按下平方根函数来(例如)数字12时,我想简化/“减少”平方根并返回2 * sqrt(3)-通过它变成(2 * 2)* 3和将sqrt(2 * 2)提取为2。

我正在使用biginteger,它具有一个非常好的gcd()方法和一个pow()方法,该方法仅限于正参数(除非您试图完全按照自己的意愿去做,否则这是有意义的。

我可以想出一些迭代的方法来完成此操作,但是使用百位数范围内的数字可能要花费一些时间。

我希望有一些我从未接触过的可爱,简单,非迭代的技巧。

只是为了澄清一下:我打算添加虚数,所以我正在计划这样的结果:

17 + 4i √3
-----------
     9


没有长的小数流。

最佳答案

本质上,您要问的是找到所有重复的主要因素。由于您要处理的是数百位数范围内的数字,因此我在这里大胆猜测一下,通常没有很好的方法可以做到这一点。否则,公钥加密将突然处于不稳定的境地。

有许多methods of computing the square root。使用这些,您可以将结果表示为整数加小于1的余数。

关于java - 需要平方根的算法提供“余数”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6432739/

10-10 01:31