【发布时间】:2022-03-02 04:51:13
【问题描述】:
“两个整数的最大公约数是两个整数中的每一个均分的最大整数。编写返回两个整数的最大公约数的方法 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;
}
}
}
【问题讨论】:
-
您的代码是不工作还是不完整?
-
这里有什么问题?
-
我可以提交这两个数字,但它不会为我计算 Gcd
-
您应该查看Euclidean algorithm。
-
for (int i = m; i <= 1; i--)在m > 1时不会执行,你的意思是i >= 1。