タグ

2009年2月22日のブックマーク (2件)

  • 2のべき乗高速判定アルゴリズム - seclan のほえほえルーム

    ある値が 2 のべき乗かどうかを調べるために、わざわざループを使っていませんか? もっといい方法があります。それがこの式 (x & (x-1)) です。この値が0だと2のべき乗です。ただし、x=0の時は気をつける必要があります。 xx-1x & (x-1)べき

    pneumaster
    pneumaster 2009/02/22
    2のべき乗高速判定アルゴリズム
  • 11章 数論的アルゴリズム

    2.べき乗 pnの計算 べき乗計算のためのアルゴリズムを素直に書けば、以下のようになる。 w=1 for i=1 to n w=w*p next i print w もちろん、これでまちがっていない。 しかし、このアルゴリズムの処理時間はnの値に比例する。 従って、nが極端に大きい場合、例えば、n=10100のような場合には、完全にお手上げである。 このループの回数を減らす方法を考える。 例えば、2100の計算を考えてみる。 上のやり方なら、掛算を100回やらなければならない。 しかし、 2100=(250)2 であるから、250を上の方法で計算してやると、掛算回数は50回。 よって、2100は51回の掛算回数で求められる。 これは、最初の100回に比べて、ほぼ半分の回数である。 ならば、250自体についても同じようにやってみる。 250=(225)2 だから、掛算回数は、27回となる。

    pneumaster
    pneumaster 2009/02/22
    べき乗/累乗の高速化アルゴリズム / バイナリ法