求最大公约数和最小公倍数
最大公约数的求法我这用的是辗转相除法
即把被除数除以除数然后把除数赋值给被除数,余数赋值给除数 一直循环直到余数为0;除数即为最大公约数
有两个整数a和b;
①如果a%b得余数c
②若c为0;b即为最大公约数
③若c不为0,就执行a=b,b=c;继续执行①
例如求27和15的最大公约数过程为:
27÷15 余12 15÷12余3 12÷3余0因此,3即为最大公约数
最小公倍数的求法是
有两个整数c和d
c乘d除以最大公约数的结果即为最小公倍数
1 #include<stdio.h> 2 int big(int x, int y) //求最大公约数 3 { 4 int temp; 5 if (x < y) //判断除数和被除数的大小,如果除数大则和被除数进行交换 6 { 7 temp = x; 8 x = y; 9 y = temp; 10 } 11 while (y != 0) //执行辗转相除法,算法的详细介绍写在上面 12 { 13 temp = x % y; 14 x = y; 15 y = temp; 16 } 17 return x; //返回上面执行后的被除数即为原本的除数 18 19 } 20 int smaller(int q, int w) //最小公倍数 21 { 22 int temp; 23 temp = big(q, w); //最大公约数的函数 24 return(q*w / temp); 25 } 26 int main() 27 { 28 int m, n, a, b; 29 scanf("%d%d", &m, &n); 30 a = big(m, n); //用变量a来接收最大公约数函数的返回值 31 b = smaller(m, n); //用变量b来接收最小公倍数函数的返回值 32 printf("最大公约数%d\n", a); 33 printf("最小公倍数%d\n", b); 34 return 0; 35 }