一开始按照原本的思绪一路往下后就是这样的:
用的是辗转相除法。
辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。
↑百度复制
//最大公约数:
private static void Y(int m, int n)//最大公约数
{
int temp = 0;//存放余数的位置
if (m % n == 0)
{
Console.WriteLine("{0}是最大公约数", n);
}
else
{
while (true)
{
if (m % n == 0)
{
Console.WriteLine("{0}是最大公约数", temp);
break;
}
else if (m % n != 0)
{
temp = m % n;
m = n;
n = temp;
}
}
}
}
static void Main(string[] args)
{
//最大公约数:
Console.Write("请输入第一个正整数:");
int m = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入第二个正整数:");
int n = Convert.ToInt32(Console.ReadLine());//接收输入内容转换成int类型的数值
if (m > n)
{
Y(m, n);
}
else if (m < n)//统一结构有助于调用函数,因为辗转用的是大的除以小的,而不是反过来
{
int a = m;
m = n;
n = a;
Y(m, n);
}
}
一开始没有写调用,但是后面改了又改(指这里多了一串这个代码):
if (m % n == 0)
{
Console.WriteLine("{0}是最大公约数", n);
}
是因为我发现输入20和40的时候输出的内容是0,主打一个不正确,应该是20。于是就写了一个新的判定。