static void Main(string[] args) { Console.WriteLine("输入两个整数,求最大公约数"); int a, b; Stopwatch stopwatch = new Stopwatch(); while (true) { a = Convert.ToInt32(Console.ReadLine()); b = Convert.ToInt32(Console.ReadLine()); stopwatch.Reset(); stopwatch.Start(); int res = getGYSByQJF(a, b); stopwatch.Stop(); Console.WriteLine(res + " 用时:" + stopwatch.ElapsedMilliseconds); } } //辗转相除法 static int getGYSByZZXCF(int a, int b) { if (a == 0 || b == 0) { return 1; } int bigNum = 0; int minNum = 0; if (a > b) { bigNum = a; minNum = b; } else { bigNum = b; minNum = a; } int yu = bigNum % minNum; if (yu == 0) { return minNum; } else { return getGYSByZZXCF(yu, minNum); } }
思路就是大数余小数得余,如果余不为0,那么余和小数的最大公约数就是大数和小数的最大公约数
计算99999999和88888888,时间为0ms