题意:
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
方法一:
递归
思路:递归寻找正整数A和正整数B 的最大公约数;最后,正整数A和正整数B 的最小公倍数=A*B/最大公约数。
递归过程如下:
#include <bits/stdc++.h> using namespace std; int f(int a,int b){//求最大公约数 if(b==0) return a; return f(b,a%b);//递归 } int main(){ int a,b; cin >> a >> b; cout << a*b/f(a,b) << endl;//求最小公倍数 return 0; }
时间复杂度:空间复杂度:
方法二:
循环
思路:循环执行。
当 b != 0 时,更新操作如下:t=b;b=a%b;
a=t;
最后当 b==0 时,输出最大公约数 a 。
正整数A和正整数B 的最小公倍数=A*B/最大公约数
#include <bits/stdc++.h> using namespace std; int main(){ int a,b,t,t1,t2; cin >> a >> b; t1=a,t2=b; // 循环求最大公约数 while(b){//b不等于0 t=b; b=a%b;//更新 a=t;//更新 } cout << t1*t2/a << endl;//求最小公倍数 return 0; }
时间复杂度:空间复杂度: