最大公约数
辗转相除法:a、b为两数,c为a、b的余数,如果a/b的余数为0,则此时的b为a、b两数的最大公约数,如果除以一次余数不为0,则把b的值赋给a,把c(余数)的值赋给b,直到c(余数)为0。
代码如下:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
int c = a % b;
while(c)
{
a = b;
b = c;
c = a % b;
}
printf("最大公约数是:%d\n",b);
return 0;
}
最小公倍数
已知两数的乘积等于两数最大公约数和最小公倍数的乘积,所以最小公倍数等于原初a*b的值除以已经求出来的最大公约数。
代码如下:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
int mulAB = a * b;//用于保存原初a、b的乘积
int small = 0;//用于保存最小公倍数
int c = a % b;
while(c)
{
a = b;
b = c;
c = a % b;
}
small = mulAB / b;//b为求出来的最大公约数
printf("最小公倍数:%d\n",small);
return 0;
}