public static SqrtResultModel FindNumSqrtInteger(int num) { int integerNumber = (int)(Math.Sqrt(num)); if (integerNumber * integerNumber == num) { return(null); } ; SqrtResultModel result = new SqrtResultModel() { IntegerNumber = integerNumber, Sequrence = new List <FormulaItem>() }; Dictionary <string, object> dic = new Dictionary <string, object>(); int nextIntegerNumber = integerNumber; int temp = num; int tempDenominator = 1; while (true) { int nextDenominator = temp - nextIntegerNumber * nextIntegerNumber; nextDenominator /= tempDenominator; int tempIntegerNum = nextIntegerNumber; nextIntegerNumber = (int)((Math.Sqrt(temp) + nextIntegerNumber) / nextDenominator); int nextSubNum = nextIntegerNumber * nextDenominator - tempIntegerNum; FormulaItem fi = new FormulaItem() { Denominator = nextDenominator, IntegerNumber = nextIntegerNumber, Subtractor = nextSubNum }; if (dic.ContainsKey(fi.ToString())) { break; } dic.Add(fi.ToString(), null); result.Sequrence.Add(fi); nextIntegerNumber = nextSubNum; tempDenominator = nextDenominator; } return(result); }
public static SqrtResultModel FindNumSqrtInteger(int num) { int integerNumber = (int)(Math.Sqrt(num)); if (integerNumber * integerNumber == num) { return null; }; SqrtResultModel result = new SqrtResultModel() { IntegerNumber = integerNumber, Sequrence = new List<FormulaItem>() }; Dictionary<string, object> dic = new Dictionary<string, object>(); int nextIntegerNumber = integerNumber; int temp = num; int tempDenominator = 1; while (true) { int nextDenominator = temp - nextIntegerNumber * nextIntegerNumber; nextDenominator /= tempDenominator; int tempIntegerNum = nextIntegerNumber; nextIntegerNumber = (int)((Math.Sqrt(temp) + nextIntegerNumber) / nextDenominator); int nextSubNum = nextIntegerNumber * nextDenominator - tempIntegerNum; FormulaItem fi = new FormulaItem() { Denominator = nextDenominator, IntegerNumber = nextIntegerNumber, Subtractor = nextSubNum }; if (dic.ContainsKey(fi.ToString())) break; dic.Add(fi.ToString(), null); result.Sequrence.Add(fi); nextIntegerNumber = nextSubNum; tempDenominator = nextDenominator; } return result; }