题意:
正整数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;
}
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号