Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅返回上一次迭代的值_C#_Loops - Fatal编程技术网

C# 仅返回上一次迭代的值

C# 仅返回上一次迭代的值,c#,loops,C#,Loops,我正在尝试使用while循环计算最大公约数。因此,我在寻找最大的数字(即循环的最后一个值)。我如何摆脱前面的数字 例如: 84和18的最大公约数是6。然而,我的代码给出了数字2、3和6。我需要更改什么才能只获得最后一个号码 using System; namespace CalculateGCD { class Program { static void Main(string[] args) { int a = int

我正在尝试使用
while循环计算最大公约数。因此,我在寻找最大的数字(即循环的最后一个值)。我如何摆脱前面的数字

例如: 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);
                }             
            }

        }

    }
}
使用系统;
名称空间计算器
{
班级计划
{
静态void Main(字符串[]参数)
{
int a=int.Parse(Console.ReadLine());
intb=int.Parse(Console.ReadLine());
int i=1;

while(i定义一个名为
max
的变量,然后从
while
循环中打印
max
,如下所示:

int max = 0;

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

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

定义一个名为
max
的变量,然后在
循环中打印
max
,如下所示:

int max = 0;

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

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

有一个简单的解决方案可以计算GCD

static int GCD(int a, int b) {
    return b == 0 ? a : GCD(b, a % b);
}
你可以像下面那样使用它

using System;

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

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


            Console.WriteLine(GCD(a,b));
        }

        static int GCD(int a, int b) 
        {
           return b == 0 ? a : GCD(b, a % b);
        }

    }
}

有一个简单的解决方案可以计算GCD

static int GCD(int a, int b) {
    return b == 0 ? a : GCD(b, a % b);
}
你可以像下面那样使用它

using System;

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

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


            Console.WriteLine(GCD(a,b));
        }

        static int GCD(int a, int b) 
        {
           return b == 0 ? a : GCD(b, a % b);
        }

    }
}
intgcd;
而(i
int-gcd;

当(i时,您可以反转循环,而不是在
a
b
之间从1到Min,从Min搜索到1

int i = Math.Min(a, b);
while (i > 0)
{
    i--;

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

您可以反转循环,而不是在
a
b
之间从1到Min,从Min搜索到1

int i = Math.Min(a, b);
while (i > 0)
{
    i--;

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

只需反转枚举序列即可

int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int i = Math.Min(a ,b);
while (i > 1)
{
  if (a % i == 0 && b % i == 0)
  {
      Console.WriteLine("GCD:{0}", i);
      break;//greatest will be the first
  }
  i--;
 }

只需反转枚举序列即可

int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int i = Math.Min(a ,b);
while (i > 1)
{
  if (a % i == 0 && b % i == 0)
  {
      Console.WriteLine("GCD:{0}", i);
      break;//greatest will be the first
  }
  i--;
 }

通过阅读这个问题,我假设OP是java的初学者。如果不进一步解释,展示包含三元运算符和递归的示例可能没有用。这只会导致复制代码。好的,当然没问题,我只是尝试展示最简单的方法:)顺便说一句,这不是一个Java程序,我是C#的初学者,我正在处理的作业要求我使用循环查找GCD。不过,我感谢你的解决方案。@MostafizurRahman没问题,伙计,这只是一个旁注:)我的意思是c#当然,愚蠢的我^ ^ ^ ^ ^ ^ ^通过阅读问题,我假设OP是java的初学者。如果不进一步解释,展示包含三元运算符和递归的示例可能是没有用的。这只会导致复制代码。好的,当然没有问题,我只是尝试展示最简单的方法:)顺便说一句,这不是Java程序我是C#的初学者,我正在做的作业要求我使用循环查找GCD。不过,我感谢你的解决方案。@MostafizurRahman没问题,这只是一个旁注:)我是说C#当然,我真傻^^