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