求最大公约数和最小公倍数

最大公约数的求法我这用的是辗转相除法

即把被除数除以除数然后把除数赋值给被除数,余数赋值给除数 一直循环直到余数为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 }

 

posted @ 2020-03-14 16:33  新生代农民工  阅读(197)  评论(0)    收藏  举报