BigInteger.Remainder(BigInteger, BigInteger) 方法

定义

对两个 BigInteger 值执行整除并返回余数。

public:
 static System::Numerics::BigInteger Remainder(System::Numerics::BigInteger dividend, System::Numerics::BigInteger divisor);
public static System.Numerics.BigInteger Remainder (System.Numerics.BigInteger dividend, System.Numerics.BigInteger divisor);
static member Remainder : System.Numerics.BigInteger * System.Numerics.BigInteger -> System.Numerics.BigInteger
Public Shared Function Remainder (dividend As BigInteger, divisor As BigInteger) As BigInteger

参数

dividend
BigInteger

要作为被除数的值。

divisor
BigInteger

要作为除数的值。

返回

dividend 除以 divisor 后的余数。

例外

divisor 是 0(零)。

示例

以下示例将 方法中的余数 DivRem 与 方法返回 Remainder 的余数进行比较,以确定这两种方法计算相同的余数。

using System;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      BigInteger dividend1 = BigInteger.Pow(Int64.MaxValue, 3);
      BigInteger dividend2 = dividend1 * BigInteger.MinusOne;
      BigInteger divisor1 = Int32.MaxValue;
      BigInteger divisor2 = divisor1 * BigInteger.MinusOne;
      BigInteger remainder1, remainder2;
      BigInteger divRem1 = BigInteger.Zero;
      BigInteger divRem2 = BigInteger.Zero;

      remainder1 = BigInteger.Remainder(dividend1, divisor1);
      remainder2 = BigInteger.Remainder(dividend2, divisor1);

      BigInteger.DivRem(dividend1, divisor1, out divRem1);
      Console.WriteLine("BigInteger.Remainder({0}, {1}) = {2}",
                        dividend1, divisor1, remainder1);
      Console.WriteLine("BigInteger.DivRem({0}, {1}) = {2}",
                        dividend1, divisor1, divRem1);
      if (remainder1.Equals(divRem1))
         Console.WriteLine("The remainders are equal.\n");

      BigInteger.DivRem(dividend2, divisor2, out divRem2);
      Console.WriteLine("BigInteger.Remainder({0}, {1}) = {2}",
                        dividend2, divisor2, remainder2);
      Console.WriteLine("BigInteger.DivRem({0}, {1}) = {2}",
                        dividend2, divisor2, divRem2);
      if (remainder2.Equals(divRem2))
         Console.WriteLine("The remainders are equal.\n");
   }
}
// The example displays the following output:
//    BigInteger.Remainder(784637716923335095224261902710254454442933591094742482943, 2147483647) = 1
//    BigInteger.DivRem(784637716923335095224261902710254454442933591094742482943, 2147483647) = 1
//    The remainders are equal.
//
//    BigInteger.Remainder(-784637716923335095224261902710254454442933591094742482943, -2147483647) = -1
//    BigInteger.DivRem(-784637716923335095224261902710254454442933591094742482943, -2147483647) = -1
//    The remainders are equal.
open System
open System.Numerics

let dividend1 = BigInteger.Pow(Int64.MaxValue, 3)
let dividend2 = dividend1 * BigInteger.MinusOne
let divisor1 = bigint Int32.MaxValue
let divisor2 = divisor1 * BigInteger.MinusOne

let remainder1 = BigInteger.Remainder(dividend1, divisor1)
let remainder2 = BigInteger.Remainder(dividend2, divisor1)

let mutable divRem1 = BigInteger.Zero
let mutable divRem2 = BigInteger.Zero

BigInteger.DivRem(dividend1, divisor1, &divRem1) |> ignore

printfn $"BigInteger.Remainder({dividend1}, {divisor1}) = {remainder1}"

printfn $"BigInteger.DivRem({dividend1}, {divisor1}) = {divRem1}"


if remainder1.Equals divRem1 then
    printfn $"The remainders are equal.\n"

BigInteger.DivRem(dividend2, divisor2, &divRem2) |> ignore

printfn $"BigInteger.Remainder({dividend2}, {divisor2}) = {remainder2}"
printfn $"BigInteger.DivRem({dividend2}, {divisor2}) = {divRem2}"

if remainder2.Equals divRem2 then
    printfn $"The remainders are equal.\n"

// The example displays the following output:
//    BigInteger.Remainder(784637716923335095224261902710254454442933591094742482943, 2147483647) = 1
//    BigInteger.DivRem(784637716923335095224261902710254454442933591094742482943, 2147483647) = 1
//    The remainders are equal.
//
//    BigInteger.Remainder(-784637716923335095224261902710254454442933591094742482943, -2147483647) = -1
//    BigInteger.DivRem(-784637716923335095224261902710254454442933591094742482943, -2147483647) = -1
//    The remainders are equal.
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim dividend1 As BigInteger = BigInteger.Pow(Int64.MaxValue, 3)
      Dim dividend2 As BigInteger = dividend1 * BigInteger.MinusOne
      Dim divisor1 As BigInteger = Int32.MaxValue
      Dim divisor2 As BigInteger = divisor1 * BigInteger.MinusOne
      Dim remainder1, remainder2 As BigInteger
      Dim divRem1 As BigInteger = BigInteger.Zero
      Dim divRem2 As BigInteger = BigInteger.Zero

      remainder1 = BigInteger.Remainder(dividend1, divisor1)
      remainder2 = BigInteger.Remainder(dividend2, divisor1)

      BigInteger.DivRem(dividend1, divisor1, divRem1)
      Console.WriteLine("BigInteger.Remainder({0}, {1}) = {2}",
                        dividend1, divisor1, remainder1)
      Console.WriteLine("BigInteger.DivRem({0}, {1}) = {2}",
                        dividend1, divisor1, divRem1)
      If remainder1.Equals(divRem1) Then Console.WriteLine("The remainders are equal.")
      Console.WriteLine()

      BigInteger.DivRem(dividend2, divisor2, divRem2)
      Console.WriteLine("BigInteger.Remainder({0}, {1}) = {2}",
                        dividend2, divisor2, remainder2)
      Console.WriteLine("BigInteger.DivRem({0}, {1}) = {2}",
                        dividend2, divisor2, divRem2)
      If remainder2.Equals(divRem2) Then Console.WriteLine("The remainders are equal.")
      Console.WriteLine()
   End Sub
End Module
' The example displays the following output:
'    BigInteger.Remainder(784637716923335095224261902710254454442933591094742482943, 2147483647) = 1
'    BigInteger.DivRem(784637716923335095224261902710254454442933591094742482943, 2147483647) = 1
'    The remainders are equal.
'
'    BigInteger.Remainder(-784637716923335095224261902710254454442933591094742482943, -2147483647) = -1
'    BigInteger.DivRem(-784637716923335095224261902710254454442933591094742482943, -2147483647) = -1
'    The remainders are equal.

注解

余数的符号是 参数的 dividend 符号。

方法 Remainder 针对不支持自定义运算符的语言实现。 其行为与使用模数运算符的除法相同。

如有必要,方法在执行模量运算之前,会自动将其他整型类型隐 BigInteger 式转换为对象。

适用于

另请参阅