题解 | #小乐乐与欧几里得#
小乐乐与欧几里得
https://www.nowcoder.com/practice/da13e0cf321e4df9acd0fdf0a433cbb0
#include<stdio.h> int main() { long long n,m,a,b,c,e;//用long long定义,之所以这样,是因为测试的数据太大, //a为被除数,b为除数,c为余数,e为最小公倍数 scanf("%lld %lld",&n,&m);//输入两个正整数n和m a=(n>=m?n:m);//把n和m中最大的放在被除数上 b=(n>=m?m:n);//把n和m中最小的放在除数上 c=a%b;//取余 while(c!=0)//辗转相除法求最大公约数 { a=b;//把原除数放在被除数 b=c;//把余数放在除数 c=a%b;//进行取余操作 } e=n*m/b;//两数之积等同于最大公约数与最小公倍数之积,是个定理 printf("%lld",e+b);//输出最大公约数与最小公倍数的和 return 0; }
总结:
➗前面的是被除数,后面的是除数
辗转相除法求最大公约数
两数之积等于最大公约数与最小公倍数之积