0

小数を使用せずに計算機を作成しています (有理数のみをサポートしています) が、平方根のバージョンを実行できるようにしたいと考えています。

平方根関数が (たとえば) 数値 12 に対して押された場合、平方根を単純化/「縮小」して 2*sqrt(3) を返したいと思います。 sqrt(2*2) を 2 として抽出します。

私は、非常に優れた gcd() メソッドと、正のパラメーターに制限された pow() メソッドを持つ biginteger を使用しています (これは、私がやろうとしていることを正確に実行しようとしない限り意味があります。

これを行うための反復的な方法をいくつか考え出すことができますが、数百桁の範囲の数値では時間がかかる場合があります。

私が触れたことのない、可愛くてシンプルで、繰り返しのないトリックがあることを願っています。

明確にするために:私は虚数を追加するつもりなので、次のような結果を計画しています:

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

小数の長いストリームなし。

4

2 に答える 2

4

本質的に、あなたが求めているのは、繰り返されるすべての素因数を見つけることです。数百桁の範囲の数値を扱っているため、一般的にこれを行う良い方法はないと推測します。そうしないと、公開鍵暗号は突然不安定な状態になります。

平方根を計算する方法はいくつかあります。これらを使用すると、結果を整数プラス1 未満の剰余として表すことができます。

于 2011-06-21T22:32:16.973 に答える
0

たぶん、あなたの数よりも少ない最高の完璧な正方形を見つけてみてください。それはあなたに方程式の一部を与えるでしょう、そしてあなたはあなたの数とあなたが見つけた完全な正方形の間の差である余りの部分を扱う必要があるだけでしょう。これは、数値も大きくなるにつれて低下しますが、おそらくそれほど速くはありません。

于 2011-06-21T22:35:43.947 に答える