#include<stdio.h>
#pragma warning(disable:4996)
int get_max(int m, int n)
{
//方法1
//int i = m > n ? n : m;//选择一个小数开始遍历
//for (; i > 0;i--)
//{
// if (0 == m%i && 0 == n%i)
// {
// return i;
// }
//}
//方法2 辗转相减法
//while (1)
//{
// if (m > n)
// {
// m -= n;
// }
// else if (m < n)//注意 if else 逻辑问题
// {
// n -= m;
// }
// else
// {
// break;//‘m’=‘n’时就是m和n已经辗转相减到两个数字的公约数了;
// }
//}
//方法3 辗转相除法
while (m*n != 0)//此处条件是为了判断m和n(m n中内容为余数)是否有零,如果有则说明余数为零有数字可以整除了。即找到公约数,跳出循环。
{
if (m > n)
{
m %= n;
}
else if (m < n)
{
n %= m;
}
else
{
break;
}
}
int i = m == 0 ? n : m;
return i;
}
int main()
{
int m = 0;
int n = 0;
do{
printf("Please enter the number:\n");
scanf("%d %d", &m, &n);
printf("%d\n", get_max(m, n));
} while (1);
system("pause");
return 0;
}
求两个数最大公约数.2
最新推荐文章于 2021-05-17 00:02:39 发布