【C言語】nの倍数かどうか判定する方法を解説

この記事では、C言語である数値が別の数値の倍数であるかどうかを判定する方法を解説します。

目次から探す

nの倍数の判定方法

プログラミングにおいて、ある数値が別の数値の倍数であるかどうかを判定することはよくあります。

C言語では、いくつかの方法を使ってnの倍数かどうかを判定することができます。

以下では、3つの方法を紹介します。

方法1: 剰余演算子を使った判定

剰余演算子(%)を使って、ある数値を別の数値で割った余りを求めることができます。

nの倍数であるかどうかを判定するためには、割られる数をnで割った余りが0であるかどうかを確認します。

もし余りが0であれば、nの倍数であると言えます。

以下に、剰余演算子を使ったnの倍数の判定のサンプルコードを示します。

#include <stdio.h>
int main() {
    int n = 5; // 判定する数値
    int num = 15; // 判定対象の数値
    if (num % n == 0) {
        printf("%dは%dの倍数です。\n", num, n);
    } else {
        printf("%dは%dの倍数ではありません。\n", num, n);
    }
    return 0;
}

上記のコードでは、変数nには判定する数値を、変数numには判定対象の数値を設定しています。

剰余演算子を使ってnumnで割った余りが0であるかどうかを判定し、結果を出力しています。

方法2: 除算を使った判定

除算を使っても、nの倍数かどうかを判定することができます。

具体的には、判定対象の数値をnで割った商が整数であるかどうかを確認します。

もし商が整数であれば、nの倍数であると言えます。

以下に、除算を使ったnの倍数の判定のサンプルコードを示します。

#include <stdio.h>
int main() {
    int n = 3; // 判定する数値
    int num = 9; // 判定対象の数値
    if (num / n * n == num) {
        printf("%dは%dの倍数です。\n", num, n);
    } else {
        printf("%dは%dの倍数ではありません。\n", num, n);
    }
    return 0;
}

上記のコードでは、変数nには判定する数値を、変数numには判定対象の数値を設定しています。

numnで割った商にnを掛けた結果がnumと等しいかどうかを判定し、結果を出力しています。

方法3: ビット演算を使った判定

ビット演算を使っても、nの倍数かどうかを判定することができます。

具体的には、nの倍数である場合、nのビット表現において最下位のビットからn-1個のビットがすべて0となります。

この性質を利用して、ビット演算を使ってnの倍数かどうかを判定することができます。

以下に、ビット演算を使ったnの倍数の判定のサンプルコードを示します。

#include <stdio.h>
int main() {
    int n = 4; // 判定する数値
    int num = 16; // 判定対象の数値
    if ((num & (n - 1)) == 0) {
        printf("%dは%dの倍数です。\n", num, n);
    } else {
        printf("%dは%dの倍数ではありません。\n", num, n);
    }
    return 0;
}

上記のコードでは、変数nには判定する数値を、変数numには判定対象の数値を設定しています。

numn-1のビットごとの論理積を取り、結果が0であるかどうかを判定し、結果を出力しています。

以上が、C言語でnの倍数かどうかを判定する方法の解説です。

剰余演算子、除算、ビット演算のいずれかを使って、nの倍数かどうかを判定することができます。

適切な方法を選んで、プログラムに組み込んでみてください。

目次から探す