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;
而(iint-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#当然,我真傻^^