题解 | 小乐乐与欧几里得

小乐乐与欧几里得

https://www.nowcoder.com/practice/da13e0cf321e4df9acd0fdf0a433cbb0

#include <stdio.h>

int main(void) 
{
    long num1, num2;//输入数
    scanf("%ld %ld", &num1, &num2);

    //求最大公约数

    long greatest_common_divisor = 0;
    int divisor_1, dividend_1;
    if (num1 >= num2)//确定除数、被除数
     divisor_1 = num1, dividend_1 = num2;
    else
     divisor_1 = num2, dividend_1 = num1;

    while((divisor_1 % dividend_1) != 0)//欧几里得求最大公约数
    {
        int middle = divisor_1;
        divisor_1 = dividend_1;
        dividend_1 = middle % divisor_1;
    }
    greatest_common_divisor = dividend_1;

    //求最小公倍数
    long least_common_multiple = 0;
    long divisor_2, dividend_2;
    if (num1 >= num2)
     divisor_2 = num1, dividend_2 = num2;
    else
     divisor_2 = num2, dividend_2 = num1;

    int middle = divisor_2;//方便递加的中间数
    while(1)//被除数成倍数增长,直到除尽除数
    {
        if((divisor_2 % dividend_2 == 0))
            break;
        divisor_2 += middle;
    }
    least_common_multiple = divisor_2;

    printf("%ld", greatest_common_divisor + least_common_multiple);


    return 0;
}

全部评论

相关推荐

08-11 17:20
门头沟学院 Java
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
客户端小将:平台不错,但是没啥题
面试问题记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务