BigInteger.GreatestCommonDivisor(BigInteger, BigInteger) 方法

定义

查找两个 BigInteger 值的最大公约数。

public:
 static System::Numerics::BigInteger GreatestCommonDivisor(System::Numerics::BigInteger left, System::Numerics::BigInteger right);
public static System.Numerics.BigInteger GreatestCommonDivisor (System.Numerics.BigInteger left, System.Numerics.BigInteger right);
static member GreatestCommonDivisor : System.Numerics.BigInteger * System.Numerics.BigInteger -> System.Numerics.BigInteger
Public Shared Function GreatestCommonDivisor (left As BigInteger, right As BigInteger) As BigInteger

参数

left
BigInteger

第一个值。

right
BigInteger

第二个值。

返回

leftright 的最大公约数。

示例

下面的示例演示了对 GreatestCommonDivisor 方法的调用,以及提供有关 ArgumentOutOfRangeException的有用信息所需的异常处理。 结果指示这两个数字的最大共除数为 1。

BigInteger n1 = BigInteger.Pow(154382190, 3);
BigInteger n2 = BigInteger.Multiply(1643590, 166935);
try
{
   Console.WriteLine("The greatest common divisor of {0} and {1} is {2}.",
                     n1, n2, BigInteger.GreatestCommonDivisor(n1, n2));
}
catch (ArgumentOutOfRangeException e)
{
   Console.WriteLine("Unable to calculate the greatest common divisor:");
   Console.WriteLine("   {0} is an invalid value for {1}",
                     e.ActualValue, e.ParamName);
}
Dim n1 As BigInteger = BigInteger.Pow(154382190, 3)
Dim n2 As BigInteger = BigInteger.Multiply(1643590, 166935)
Try
   Console.WriteLine("The greatest common divisor of {0} and {1} is {2}.", _
                     n1, n2, BigInteger.GreatestCommonDivisor(n1, n2))
Catch e As ArgumentOutOfRangeException
   Console.WriteLine("Unable to calculate the greatest common divisor:")
   Console.WriteLine("   {0} is an invalid value for {1}", _
                     e.ActualValue, e.ParamName)
End Try

注解

最大的共除数是可以将两 BigInteger 个值相除而不返回余数的最大数字。

left如果 和 right 参数是非零数字,则该方法始终至少返回值 1,因为所有数字都可以除以 1。 如果任一参数为零,该方法将返回非零参数的绝对值。 如果两个值均为零,则该方法返回零。

注意

计算 和 值leftright的最大常见除数可能是一项非常耗时的操作。

无论 和 right 参数的符号left如何,GreatestCommonDivisor方法返回的值始终为正。

适用于