web-dev-qa-db-ja.com

対数アルゴリズム

任意の底の対数を評価する必要がありますが、それは問題ではありません。これにアルゴリズムはありますか?私はJavaでプログラミングしているので、Java code。

2進対数を非常に高速に見つける方法?(せいぜいO(1)) は私の質問に答えられるかもしれませんが、私はそれを理解していません。明確にできますか?

25
Justin

このIDを使用します。

ログb(n)=ログe(n)/ログe(b)

ここで、logは任意の底の対数関数であり、nは数値であり、bは底です。たとえば、Javaでは、これは256の底2対数を見つけます。

_Math.log(256) / Math.log(2)
=> 8.0
_

Math.log() は、ベースeを使用します。そして、ベース_10_を使用する Math.log10() もあります。

76
Óscar López