求两个数的最大公约数
最大公约数举例:12 18 他们的约数有 1 2 3 6 最大的就为 6
最大公约数:即两个数据中公共约数的最大者。
求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法
#include<stdio.h>
int main()
{
int a, b;
int i = 0;
int min;
scanf("%d%d",&a, &b);
min = a < b ? a : b;
while (i<1)
{
if (a % min == 0 && b % min == 0)
{
printf("%d\n", min);
++i;
}
--min;
}
return 0;
}
以上方法中用到了三目操作符,下面简单介绍一下:
x>y?x:y 就可以表示以下函数
if(x>y)
{
return x;
}
else
{
return y;
}
下面看一下另外一种方法:
思路:
例子:18和24的最大公约数
第一次:a = 18 b = 24 c = a%b = 18%24 = 18
循环中:a = 24 b=18
第二次:a = 24 b = 18 c = a%b = 24%18 = 6
循环中:a = 18 b = 6
第三次:a = 18 b = 6 c=a%b = 18%6 = 0
循环结束
此时b中的内容即为两个数中的最大公约数。
int main()
{
int a = 18;
int b = 24;
int c = 0;
while (c = a%b)
{
a = b;
b = c;
}
printf("%d\n", b);
return 0;
}