#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) //最小公倍数:(m*n)/最大公约数
{
int a, b;
int i = 1;
int min;
printf("第一个数a的值为:>");
scanf("%d", &a);
printf("第二个数b的值为:>");
scanf("%d", &b);
if (a < b) //假设最大公约数就是a和b的较小值,最大公约数不超过二者中的较小值,如4和8
{
min = a;
}
else
{
min = b;
}
while(1)
{
if(a % min == 0 && b % min == 0) //当a取余较小值为0,b取余较小值也为0,此时较小值为ab中的一个,故最大公约数为min
{
printf("最大公约数为:%d\n", min);
break;
}
else
{
min--; //否则,二者中的较小值变小继续判断
}
}
return 0;
}
2.辗转相除法
24 18
m n t
24 % 18 =6
若t=0 n为最大公约数
若t非0 m = 18 n = 6 t=0
n为最大公约数
t = m % n
if(t != 0)
{
m = n;
n = t;
t = m %n;
}
else
{
t = t;
}