求 a 和 b 的最大公约数
算法简介:将两个数a,b相除(a > b),如果余数c不等于0,就把b的值给a,c的值给b,直到c等于0,此时最大公约数就是b
最小公倍数:(a*b) / 最大公约数
#include<stdio.h> // 辗转相除法求最大公约数 int fun(int a, int b){ if(b == 0) return a; else return fun(b, a%b); } int main(){ int a, b; scanf("%d%d", &a, &b); int ys = fun(a, b); printf("%d和%d的最大公约数为:%d\n",a, b, ys); printf("%d和%d的最小公倍数为:%d", a, b, (a*b)/ys); return 0; }
那三个数 a, b, c 的最大公约数和最小公倍数呢
最大公约数:用前两个数的最大公约数和第三个数再求最大公约数
最小公倍数:用前两个数的最小公倍数和第三个数再求最小公倍数
#include<stdio.h> int fun(int a, int b){ if(b == 0) return a; else return fun(b, a % b); } int yx(int a, int b){ return a*b / fun(a, b); } int main(){ int a, b, c; scanf("%d%d%d", &a, &b, &c); printf("最大公约数为:%d\n", fun(fun(a, b), c)); printf("最小公倍数为;%d", yx(yx(a, b), c)); return 0; }