Org.BouncyCastle.Math.BigInteger.ExtEuclid C# (CSharp) 메소드

ExtEuclid() 개인적인 정적인 메소드

private static ExtEuclid ( BigInteger a, BigInteger b, BigInteger &u1Out ) : BigInteger
a BigInteger
b BigInteger
u1Out BigInteger
리턴 BigInteger
		private static BigInteger ExtEuclid(
			BigInteger	    a,
			BigInteger	    b,
			out BigInteger  u1Out)
            //BigInteger	    u2Out)
		{
			BigInteger u1 = One;
			BigInteger u3 = a;
			BigInteger v1 = Zero;
			BigInteger v3 = b;

			while (v3.sign > 0)
			{
				BigInteger[] q = u3.DivideAndRemainder(v3);

				BigInteger tmp = v1.Multiply(q[0]);
				BigInteger tn = u1.Subtract(tmp);
				u1 = v1;
				v1 = tn;

				u3 = v3;
				v3 = q[1];
			}

            //if (u1Out != null)
            //{
            //    u1Out.sign = u1.sign;
            //    u1Out.magnitude = u1.magnitude;
            //}
            u1Out = u1;

            //if (u2Out != null)
            //{
            //    BigInteger tmp = u1.Multiply(a);
            //    tmp = u3.Subtract(tmp);
            //    BigInteger res = tmp.Divide(b);
            //    u2Out.sign = res.sign;
            //    u2Out.magnitude = res.magnitude;
            //}

			return u3;
		}