两个整数的最大公约数是能够同时整除这两个数的最大的整数。编写一个方法 Gcd,返回两个整数的最大公约数,并将该方法并入一个应用程序中,该应用程序从用户读取两个值并显示结果。
(这不是作业,只是我使用的一本书中的练习)
你需要帮我解决吗?以下是我已经完成的部分:
(编辑 - 我可以提交两个数字,但它不会为我计算Gcd)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Greatest_Common_Divisor
{
class Program
{
static int GetNum(string text)
{
bool IsItANumber = false;
int x = 0;
Console.WriteLine(text);
do
{
IsItANumber = int.TryParse(Console.ReadLine(), out x);
} while (!IsItANumber);
return x;
}
static void Main(string[] args)
{
string text = "enter a number";
int x = GetNum(text);
text = "enter a second number";
int y = GetNum(text);
int z = GCD(x, y);
Console.WriteLine(z);
}
private static int GCD(int x, int y)
{
int v = 0;
int n = 0;
v = GetGreatestDivisor(x, y);
return v;
}
static int GetGreatestDivisor(int m, int h)
{
do
{
for (int i = m; i <= 1; i--)
if (m%i == 0 && h%i == 0)
{
int x = 0;
x = i;
return x;
}
} while (true);
return m;
}
}
}
m > 1
时,for (int i = m; i <= 1; i--)
不会执行,你的意思是i >= 1
。 - Daniel Fischer