剰余関数の機能
剰余関数は、除算の余りを計算する関数です。剰余は「剰余(x,y)=x-y*整数部(x/y)」の計算式で求めます。
剰余というのは割り算の割った余りのことですね。数学で習ったやつです。割り算を行うわけですから、割る数に0が含まれてはいけないことになります。
計算式「剰余(x,y)=x-y*整数部(x/y)」について
いきなり計算式が登場して困惑した方もいると思いますが、剰余関数の点でだけでいえば、それほど重要ではありません。なぜなら、余りを求める問題が単体で出題されるかといえば微妙だからです。極端な話、知らなくても情報処理技術者試験には合格すると思います。
計算式は覚える必要はありません。なぜなら情報処理技術者試験の冊子に記述されていて、必要になったら試験中でも参照することができるので、暗記しておく必要はありません。
なぜ「剰余(x,y)=x-y*整数部(x/y)」という計算式になっているのかというのは、情報処理技術者試験の試験基準で定義されているから、そうなっているから、と言うしかなく、数学の嫌いを増殖した「とりあえず覚えろ」系の悪しき慣習で良くないことですが、そうなっています。計算式は気になると思いますが、難しく考えず、いきつくところ普通に余りを求めている、ただそれだけのことなんだ、ということを意識してもらえればそれでいいと思います。
剰余関数の書式
剰余関数は引数が2つになります。算術式は数値単体だけでなく、セル参照や計算式(A1/B2とか)も算術式に含まれます。
剰余関数は「引数1÷引数2」の計算をした余りが返ってくる関数です。
剰余関数の実行例
A | B | C | D | E | |
1 | 被除数 | 除数 | 剰余関数 | 結果 | |
---|---|---|---|---|---|
2 | 19 | 7 | 剰余(19,7) | 5 | |
3 | 10 | 5 | 剰余(A3,B3) | 0 | |
4 | 0 | 12 | 剰余(A4,B4) | 0 | |
5 | 12 | 0 | 剰余(A5,B5) | エラー | |
6 | 20 | 6 | 剰余(A6,B6) | 2 | |
7 | -20 | 6 | 剰余(A7,B7) | 4 | |
8 | 20 | -6 | 剰余(A8,B8) | -4 | |
9 | -20 | -6 | 剰余(A9,B9) | 2 | |
10 |
この表はA列は被除数、B列は除数、C列は関数として入力する文字列、D列は実行した結果が入っています。D4は剰余関数の引数がセル番地でもキチンとセル番地内の値で割った剰余が返ってきています。
除数・被除数が0のとき、A4で被除数を0にして割ってみると0が、B5で除数(引数2)を0にするとエラーになります。この辺りは数学と同じです。
情報処理試験の剰余関数は「剰余(x,y)=x-y*整数部(x/y)」と計算式が決められています。実際に6行目の「剰余(20,6)」を計算してみます。
剰余(20,6) | =20-6*整数部(20/6) |
=20-6*整数部(3.33333…) | |
=20-6*3 | |
=20-18 | |
=2 |
余りが2ということで同じ値になりました。イメージとしては、整数部関数で商に当たる値を求め、商に除数の値をかけて求まった値を被除数から引くというイメージです。
除数、被除数のどちらかがマイナスの場合
負の値を引数にした場合ですが、「剰余(x,y)=x-y*整数部(x/y)」の計算式から負の値が引数になっている場合、剰余の値が妙なことになります。7行目の剰余(-20,6)を順を追って計算します。
剰余(-20,6) | =-20-6*整数部(-20/6) |
=-20-6*整数部(-3.33333…) | |
=-20-6*-4 | |
=-20+24 | |
=4 |
過程の計算の結果は合っていますが、余りが4というのがおかしくありませんか?
剰余関数の計算 -20 / 6 = -4 余り 4
私が考える計算 -20 / 6 = -3 余り -2
私としては余り-2が欲しいのに剰余関数の結果は4になっています。原因は整数部関数なのですが、商の値が決められていない以上、数学として商と余りの関係はどちらも正しい値です。しかし表計算上では剰余はx-y*整数部(x/y)と定義されている以上、余り-2は間違いで、余り4が正しい剰余の値になります。
このことから負の値を引数にしたときの剰余関数は、計算結果は正しいが、自前でアプリケーションを作成するなど剰余関数を使う場面があるときは、自分が欲しい値にならないときがある、剰余関数はクセのある関数なんだと注意が必要です。
このすぐ下に書いてある内容は表計算試験範囲外です、読み飛ばしてください。
剰余関数がクセのある関数なので、自前でアプリケーションを作る場合、いくつか対応する方法が考えられます。
1.負の値を使わせない
負の数を引数に設定したら、エラーを返すように作る方法です。比較的簡単に設定できます。しかし、負の数を使うという時もあるでしょう。その場合、この方法は使用できません。
2.剰余関数は使わず自前の関数を作る
剰余関数は敢えて使わず、自前の関数を作るという方法も考えられます。
ここまで。
除数、被除数のどちらかがマイナスの場合の符号の関係
被除数と除数が負の値になった場合、割り算の答えの商や、余りの剰余の符号がどのようになるかの確認です。
結論からいうと、引数1か引数2のどちらかが負の時は商が負になり、剰余の符号は引数2の符号と一致します。
被除数の符号 | 除数の符号 | 余りの符号 |
正 | 正 | 正 |
負 | 正 | 正 |
正 | 負 | 負 |
負 | 負 | 負 |
参考に計算過程を載せておきます。
剰余(x,y)=x-y*整数部(x/y)
剰余(20,6) | =20-6*整数部(20/6) |
=20-6*整数部(3.33333…) | |
=20-6*3 | |
=20-18 | |
=2 | |
剰余(20,-6) | =20-(-6)*整数部(20/-6) |
=20-(-6)*整数部(-3.33333…) | |
=20-(-6)*-4 | |
=20-24 | |
=-4 | |
剰余(-20,6) | =-20-6*整数部(-20/6) |
=-20-6*整数部(-3.33333…) | |
=-20-6*-4 | |
=-20+24 | |
=4 | |
剰余(-20,-6) | =-20-(-6)*整数部(-20/-6) |
=-20-(-6)*整数部(3.33333…) | |
=-20-(-6)*3 | |
=-20+18 | |
=-2 |
基本情報試験では正負かどうかなどと直接聞かれることはありません。もし聞かれても計算式を使えば正負の数を求められるので、覚える必要はありません。こんな関数あったなーくらいは把握しておけばいいと思います。
以上、剰余関数でした。