求最小公倍数,先求最大公约数,然后再用两数乘积来除以最大公约数,即得最小公倍数;
采用辗转相除法来实现;
代码一:
#include <iostream>
using namespace std;
int gdc(int x,int y)
{
return (!y)?x:gdc(y,x%y);
}
int main()
{
int a,b;
cin>>a;
cin>>b;
cout<<(a*b)/gdc(a,b)<<endl;
return 0;
}
这段代码是参考了别人写的;
代码二:
#include<iostream>
using namespace std;
int main(void){
int a = 393;
int b = 93219;
int num;
int cnt = 0;
//cin >> a;
//cin >> b;
if ((a % b == 0) | (b % a == 0)){
if (a > b){
num = a;
}
else if (b > a){
num = b;
}
}
else{
if ((a % 2 == 0) && (b % 2 == 0)){
while ((a % 2 == 0) && (b % 2 == 0)){
a = a / 2;
b = b / 2;
cnt++;
}
for (int i = 0; i < cnt; i++){
num = a * b * 2;
}
}
else{
num = a*b;
}
}
cout << num<<endl;
return 0;
}
这段代码是自己写的,测试用例有的过不了,究其原因,两个数都是3的倍数时,会出问题,只考虑了等于2这个情况;月底修改;