什么是最大公约数?
如·:两数为12,18
12=1×12或2×6;
18=1×18或2×9或3×6;
则它们的最大公约数为6.
那么如何用代码实现求两数最大公约数呢?
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int a = 0, b = 0, c = 0;
scanf("%d%d", &a, &b);
if (a > b)
{
while (a % b != 0)
{
c = a % b;
a = b;
b = c;
}
printf("%d\n", b);
}
else
{
while (b % a != 0)
{
c = b % a;
b = a;
a = c;
}
printf("%d\n", a);
}
return 0;
}
随意两数a,b它们最大公约数一定<=min(a,b);
那么想到可以让a,b两数中较大的对较小的取模即:
a % b 或 b % a
现取a>b情况:
当取出的模不为0,则把b的值赋予a,模数赋予b,再次取模
即这步:
while (a % b != 0)
{
c = a % b;
a = b;
b = c;
}
当最终a%b==0时求得最大公约数:
printf("%d\n", b);
取a=26,b=39运行结果如下:
完成要求!