C# のモジュロ演算子

Luqman Khan 2024年2月15日
C# のモジュロ演算子

このチュートリアル記事では、C# プログラミングのモジュロ演算子を紹介します。

C# でモジュロ演算子を使用して剰余を取得する

モジュロ演算で使用される用語は次のとおりです。

  • 除数:任意の値を除算する値。
  • 配当:別の値で割った値。
  • 商:除算演算から得られる値。
  • 残りの値:残りの値として取得する値。

2つの値 13 と 2 を除算するとします。商が主な関心事である場合、除算演算子を使用して、6.5 の答えを取得します。

そして今、13 を 2 で割った残りの値を取得したいとします。13%2 で表します。除算後の余りは 1 になります。

モジュロ演算には小数点以下の桁数はありません。被除数が除数よりも大きい場合は、それを除算して余りを取得します。それ以外の場合、配当は剰余値です。

別の例を考えてみましょう。3 を 4 で割ったものです。ここで 3 は配当、4 は除数であり、3 は 4 より小さいため、この式の余りは 3(3%4)です。

以下は、除算とモジュロ演算の両方のコード比較です。

例(除算):

public static void divideop() {
  double num_1, num_2, result;
  Console.WriteLine("enter n1");
  num_1 = Convert.ToInt32(Console.ReadLine());
  Console.WriteLine("enter n2");
  num_2 = Convert.ToInt32(Console.ReadLine());
  result = num_1 / num_2;
  Console.WriteLine("result is: " + result);
  Console.ReadLine();
}

出力:

除算のコード出力

上記のコードは、入力としてユーザーから 2つの値 num_1num_2 を取得します。result 変数は、除算後の値を格納します。

上記のコードでは、小数点値を返す可能性があるため、double データ型を使用しました。

結果がどのように得られるかを理解するには、下の画像を参照してください。

手動除算

例(モジュロ演算):

public static void modulusop() {
  double num_1, num_2, result;
  Console.WriteLine("enter n1");
  num_1 = Convert.ToInt32(Console.ReadLine());
  Console.WriteLine("enter n2");
  num_2 = Convert.ToInt32(Console.ReadLine());
  result = num_1 % num_2;
  Console.WriteLine("result is: " + result);
  Console.ReadLine();
}

出力:

モジュロ演算コード出力

同様に、上記のコードは num_1num_2 の 2つの値を取得し、result 変数はモジュロ演算後の剰余値を格納します。

以下は、モジュロ演算がどのように実行されるかを理解するための画像です。

手動モジュロ演算

完全なサンプルコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace modulus_operator_A1 {
  public class Program {
    static void Main(string[] args) {
      int i = 1;
      Console.WriteLine("enter your chooice 1 for divide operation 2 for modulus operation");
      int choice = Convert.ToInt32(Console.ReadLine());
      if (choice == 1) {
        divideop();
      } else if (choice == 2) {
        modulusop();
      } else {
      }
      Console.Read();
    }
    public static void divideop() {
      double num_1, num_2, result;
      Console.WriteLine("enter n1");
      num_1 = Convert.ToInt32(Console.ReadLine());
      Console.WriteLine("enter n2");
      num_2 = Convert.ToInt32(Console.ReadLine());
      result = num_1 / num_2;
      Console.WriteLine("result is: " + result);
      Console.ReadLine();
    }
    public static void modulusop() {
      double num_1, num_2, result;
      Console.WriteLine("enter n1");
      num_1 = Convert.ToInt32(Console.ReadLine());
      Console.WriteLine("enter n2");
      num_2 = Convert.ToInt32(Console.ReadLine());
      result = num_1 % num_2;
      Console.WriteLine("result is: " + result);
      Console.ReadLine();
    }
  }
}

関連記事 - Csharp Operator