吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 923|回复: 8
收起左侧

[求助] 求最大公约数和最小公倍数的函数

[复制链接]
djdgf4 发表于 2022-5-20 11:29
本帖最后由 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;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

甜萝 发表于 2022-5-20 11:45
https://www.runoob.com/python3/python3-hcf.html
https://www.runoob.com/python3/python3-lcm.html
可以参考上面链接
wihn 发表于 2022-5-20 12:20
!优先级比&高,一些条件应该写作!(m&1)吧。
另外,gcd这个变量没用到,这应该是道题目吧,那尽量用gcd
seawaycao 发表于 2022-5-20 12:33
y761110576 发表于 2022-5-20 13:12
return greatest_common_divisor( n, n-m);
应该是return greatest_common_divisor( m, n-m);
列明 发表于 2022-5-20 13:42
不懂就问,&是什么意思,两个小于号又是什么意思,求余不应该是%么?
 楼主| djdgf4 发表于 2022-5-20 13:55
列明 发表于 2022-5-20 13:42
不懂就问,&是什么意思,两个小于号又是什么意思,求余不应该是%么?

&是按位与运算,判断奇偶;<<是移位,相当于除以2
列明 发表于 2022-5-20 15:15
djdgf4 发表于 2022-5-20 13:55
&是按位与运算,判断奇偶;

原来这两个都是位运算啊,明白了,&位与,<<移位,我以前问过,别人也给我说过,我记住过,忘记了
老伙计 发表于 2022-5-20 15:28
#include <stdio.h>

int gcd(int a , int b)
{
        if(b) return gcd(b , a % b)         ;
        else return a                       ;
}

int main(void)
{
        int a , b                           ;
        scanf("%d%d" , & a , & b)           ;
        printf("%d\n" , a * b / gcd(a , b)) ;
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表