C#의 Math.DivRem() 메서드는 두 숫자를 나누어 그 결과인 몫(quotient)을 반환하고, 나머지(remainder)는 out 매개변수를 통해 출력해 주는 메서드입니다. 일반적으로 몫과 나머지를 구하려면 나눗셈 연산자(/)와 나머지 연산자(%)를 각각 사용해야 하지만, 이 메서드를 활용하면 단 한 번의 호출로 두 값을 모두 얻을 수 있어 코드가 더 간결하고 효율적입니다.
구문(Syntax)
public static int DivRem(int dividend, int divisor, out int remainder); public static long DivRem(long dividend, long divisor, out long remainder);
매개변수 설명
- dividend : 나누어지는 수(피제수)
- divisor : 나누는 수(제수)
- remainder :
out매개변수로, 나눗셈의 나머지 값이 저장됩니다
첫 번째 오버로드는 int 형식을, 두 번째 오버로드는 long 형식을 지원하므로 숫자의 크기에 따라 적절한 버전을 선택하여 사용할 수 있습니다.
예제 1 : int 형식으로 사용하기
다음은 Math.DivRem() 메서드를 int 형식으로 구현한 예제입니다.
using System;
public class Demo {
public static void Main(){
int dividend = 30;
int divisor = 7;
int remainder;
int quotient = Math.DivRem(dividend, divisor, out remainder);
Console.WriteLine("Quotient = " + quotient);
Console.WriteLine("Remainder = " + remainder);
}
}
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
Quotient = 4 Remainder = 2
30을 7로 나누면 몫은 4, 나머지는 2입니다. 이처럼 Math.DivRem() 메서드 하나만으로 몫과 나머지를 동시에 손쉽게 구할 수 있습니다.
예제 2 : long 형식으로 사용하기
큰 숫자를 다룰 때는 long 형식 오버로드를 사용하면 됩니다.
using System;
public class Demo {
public static void Main(){
long dividend = 767676765765765;
long divisor = 7;
long remainder;
long quotient = Math.DivRem(dividend, divisor, out remainder);
Console.WriteLine("Quotient = " + quotient);
Console.WriteLine("Remainder = " + remainder);
}
}
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Quotient = 109668109395109 Remainder = 2
참고 : C# 7.0 이상에서의 간결한 문법
C# 7.0부터는 out 변수를 호출 시점에 인라인으로 선언할 수 있어 코드를 더욱 짧게 작성할 수 있습니다.
int quotient = Math.DivRem(dividend, divisor, out int remainder);
또한 별도의 변수 선언 없이 몫과 나머지를 한 줄로 처리할 수 있어, 반복문 안에서 나눗셈 연산을 자주 수행하는 경우 특히 유용합니다.