栩修染


私信TA

用户名:soungkayou

访问量:995

签 名:

I like it when you smile. But I love it when I'm the reason.

等  级
排  名 10091
经  验 1054
参赛次数 1
文章发表 5
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。

例如,求(3,2):

∵ 3÷2=1(余1 !0)

∴(3,2)=(2,1);

∵ 2÷1=2(余0)

∴ (2,1)= 1;

∴ (3,2)=1。

可以写成右边的格式。

用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。


参考代码:

#include<stdio.h>

int fun(int a,int b){  //计算最大公约数

    if(a % b ==0) //判断余数是否为0,若为0,则b是二者的最小公约数

    return b;

    else

    fun(b, a % b);  //否则,递归

}

int main()

{

    int a,b,c,num1,num2;

    scanf("%d %d", &a, &b);

  if (a < b){ //保证a,b的大小顺序

      c=a;

      a=b;

      b=c;

    }

    num1=fun(a,b); //计算最大公约数

    num2=a*b/num1; //计算最小公倍数

    printf("%d\n%d",num1,num2);

    return 0;

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区