题解 | 小乐乐与欧几里得

小乐乐与欧几里得

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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-18 16:32
quench@0916:一顿操作猛如虎,一看工资2500
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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