好友
阅读权限 10
听众
最后登录 1970-1-1
本帖最后由 djdgf4 于 2022-5-20 14:03 编辑
输出没有任何结果,请问是哪里错了?
我是参考了这个帖子,并不是单一想用辗转相除或更相减损,想问问在这个帖子的思路上,这串代码的错误?https://zhuanlan.zhihu.com/p/31824895
/*
* 该函数用来计算两个数的最大公约数
*/
int greatest_common_divisor(int n,int m)
{
int gcd=-1 ;
// 请在下面添加代码
// ********** Begin **********
if ( n == m)
return n;
if ( n < m)
return greatest_common_divisor( m, n);
else {
if ( !n&1 && !m&1 )
return greatest_common_divisor( n>>1 , m>>1 )*2 ;
else if ( !n&1 && m&1 )
return greatest_common_divisor( n>>1 , m);
else if ( n&1 && !m&1 )
return greatest_common_divisor( n, m>>1 );
else
return greatest_common_divisor( n, n-m);
}
// ********** End **********
return gcd;
}
/*
* 该函数用来计算两个数的最小公倍数
*/
int least_common_multiple(int n,int m)
{
int lcm=0 ;
// 请在下面添加代码
// ********** Begin **********
int greatest_common_divisor(int n,int m);
lcm = ( n * m )/(greatest_common_divisor( n, m));
// ********** End **********
return lcm;
}
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。