AC0でcによる除算は何のためですか?


11

私たちの入力がバイナリであるとし、我々は出力に持ってX / C 、どこcは、いくつかの一定の整数です。cが2の累乗の場合、これは単なるシフトですが、他の数値はどうでしょうか?cごとに一定の深さの回路でそれを行うことはできますか?何について、C = 3xx/ccccc=3

xmodc

回答:


16

2進数の加算と減算はAC0ます。

任意の定数、 はによる除算に還元でき(): cxmodcAC0cx/c

xmodc=x(x/c++x/cc times)

は 、累乗ではないにとって難しいことが知られています。したがって、は 、べき乗ではないにとって困難です。xmodcAC0c2x/cAC0c2

コメントでエミルによって示されるように、奇数の素数のための簡単な減少がある から(すなわち、と)に とバイナリ入力:倍数である入力ビットのみを使用し、FLT()を使用します。 cMODciximodcxi{0,1}xmodcp12(p1)imodp=1


同じ引数は任意に適用される 2の累乗ではないc
エミルJeřábek3.0

4
その他のためのAC ^ 0ではありません示すのは容易である:例えば、我々が想定することができ奇素数である、そしてあなたは、すべて使用することによって、それにMOD_pを減らすことができ番目のビットを。または、Barrington-Thérien分類を適用できます。これは通常の言語であり、その構文モノイドは重要なグループです。xmodccc=p(p1)
エミルイェジャベク3.0 14

@Emil Jerabek:ありがとう、これはまさに私が必要としていた助けでした:)
daniello 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.