110,539
社区成员
发帖
与我相关
我的任务
分享
private void button1_Click(object sender, EventArgs e)
{
int first = Convert.ToInt32(this.textBox1.Text);
int second = Convert.ToInt32(this.textBox2.Text);
int result = MaxY(first, second);
MessageBox.Show("最大公约数是:"+result + "_" + first / result + ":" + second / result);
}
static int MaxY(int firstNumber, int secondNumber) //求最大公约数的函数
{
int max = Max(firstNumber, secondNumber);
int min = Min(firstNumber, secondNumber);
int r = max % min;
if (r == 0) //如果把最大的除以最小的数,余数r为0的话,表示min就是最大公约数
{
Console.WriteLine("最大公约数是{0}", min);
return min;
}
else //如果余数r不等于0,就把先前的min值当成最大值来用,把余数r当成先前的最小值来用
{ //一直不断的相除,直到余数r==0为止,这样就求出最大公约数
while (r != 0)
{
max = min;
min = r;
r = max % min;
}
return min;
}
}
static int Max(int firstNumber, int secondNumber) //求两个数的最大值
{
if (firstNumber > secondNumber)
{
return firstNumber;
}
return secondNumber;
}
static int Min(int firstNumber, int secondNumber) //求两个数的最小值
{
if (firstNumber > secondNumber)
{
return secondNumber;
}
return firstNumber;
}
static void Main(string[] args)
{
int m = 2800, n = 3200;
int r = 1;//余数
if (m < n)
{
Console.WriteLine(GetGCM(n, m,out r));
}
else
{
Console.WriteLine(GetGCM(m, n, out r));
}
Console.ReadLine();
}
/// <summary>
/// 求a,b最大公约数
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="r"></param>
/// <returns></returns>
static int GetGCM(int a, int b,out int r)
{
r = a % b;
if (r == 0)
{
return b;
}
else
{
a = b;
b = r;
return GetGCM(a, b, out r);
}
}
/// <summary>
/// 求a,b最大公约数
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="r"></param>
/// <returns></returns>
static int GetGCM1(int a, int b, out int r)
{
r = a % b;
if (r == 0)
{
return b;
}
else
{
while (r != 0)
{
a = b;
b = r;
r = a % b;
}
return b;
}
}