アプリ版:「スタンプのみでお礼する」機能のリリースについて

%演算子に関して以下の法則が成り立ちそうな
気がしますが、証明が苦手で立証できません。
(%演算子とは余りを求める演算子とします)

(a*b)%c <=> (a%c)*(b%c)%c

これを証明しているサイトや、%演算子の法則などに
ついて纏めているサイトなどご存じないでしょうか?
または証明のヒントなどご教示頂けないでしょうか。

夏休みの宿題っぽいですが、全然関係ないです。
Cでプログラム書いていて、bがコンパイラで扱えない
ほど大きい定数なので、予めb%cの計算結果に
置き換えたいのです(cも定数)。
wikipediaなどで調べたのですが、分配法則、
交換法則などの説明には%演算子が含まれておらず、
質問した次第です。
よろしくお願いします。

A 回答 (2件)

wikipediaを検索するなら『合同式』でどうぞ。



(a*b)%c <=> {(a%c)*(b%c)}%cは次のように考えれば証明できます。
a=hc+m
b=kc+n ただしm,n<c

とすると
a*b =(hc+m)(kc+n)=c(hkc+hn+km)+mn
(a*b)%c=(m*n)%c

一方、
a%c=m,b%c=nより
右辺=(m*n)%c
で等しくなります。
    • good
    • 0
この回答へのお礼

No.1さんの書かれた、
aをcで割ったときの商をx,あまりをd,…
の説明と合わせて読んで理解できました。

Wikipediaの「合同式」に書かれていたんですね!
探し方が甘かったと反省しました。
しかし、これを読んでも理解にたどり着けなかったので、
回答して頂いて本当に助かりました。
ありがとうございます。

お礼日時:2005/09/01 13:10

aをcで割ったときの商をx,あまりをd,


bをcで割ったときの商をy,あまりをe,として,

a=xc+d,b=yc+eとおいて計算してみましょう.

すると,両辺とも(d*e)%cになり,一致します.
    • good
    • 0
この回答へのお礼

No.2さんの書かれた途中式と合わせて読んで
理解できました。
自分の中では仮説だったので、これで堂々と
使えますね。
ありがとうございます!

お礼日時:2005/09/01 13:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!