剰余(あまり)の算出方法
C言語やJavaなどで余りの出した方として定番なのは「%」の演算子を使う方法です。
int a = 3 % 10; // a == 3 int b = 8 % 6; // b == 2
そこで、言語に依存しないでやる方法はないでしょうか。
某所のセンタープレの数2の選択問題にこのネタがあったので書いてみます。
int a = 83; // 割られる数 int b = 10; // 割る数 int c = a/b; // c == 8 (少数は切捨てされる) int d = a - (c*b); // d == 3 ... int e = a - ((int)(a/b))*b; // e == d
少数切捨ての部分がやや依存のように思えますが、コンピューター上の演算では、よくある話です。
また、a==(c*b)を判定することで割り切れるかどうかの判断も可能です。
割るというそもそもの機能に着目するとやや複雑になりますが表現可能です。
int a = 83; // 割られる数 int b = 10; // 割る数 int c = a; int cnt = 0; for(cnt=0;c>b;cnt++) c-=b;
この演算ではcntは商になり、cが余りになります。
この用に考えれば、少数切捨てなんかは造作もないことですね。
同時に余りも求めちゃうことができます。