仅返回上一次迭代的值

VaV*_*aVa 1 c# loops

我试图用a来计算最大公约数while loop.因此,我正在寻找最大的数字(即循环的最后一个值).我如何摆脱前面的数字?

示例:84和18的最大公约数是6.但是,我的代码给出了数字2,3和6.如果只获取最后一个数字,我需要更改什么?

using System;

namespace CalculateGCD
{
    class Program
    {
        static void Main(string[] args)
        {

            int a = int.Parse(Console.ReadLine());
            int b = int.Parse(Console.ReadLine());


            int i = 1;

          while (i <= Math.Min(a, b))
            {             
                i++;

                if (a % i == 0 && b % i == 0)
                {
                    Console.WriteLine("GCD:{0}", i);
                }             
            }

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

Sal*_*ari 5

定义一个名为的变量max然后打印max出这样的while循环:

int max = 0;

while (i <= Math.Min(a, b))
{
     i++;

     if (a % i == 0 && b % i == 0)
     {
          max = i;
     }
}
Console.WriteLine("GCD:{0}", max);
Run Code Online (Sandbox Code Playgroud)

此外,如果你使用C#6,你可以Console.WriteLine通过使用字符串插值来简化你:

Console.WriteLine($"GCD:{max}");
Run Code Online (Sandbox Code Playgroud)