• 求最大公约数(最小公倍数)


    【问题描述】

    用递归方法求两个数m和n的最大公约数(greatest common divisor)。(m>0,n>0)

    【大水题,大佬快绕】用辗转相除法求,递归实现。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 using namespace std;
     7 int m, n;
     8 int gcd(int x, int y)
     9 {
    10     if(y == 0) return x;
    11     return (gcd(y, x % y));
    12 }
    13 int main()
    14 {
    15     scanf("%d%d", &m, &n);
    16     printf("gcd=%d
    ", gcd(m, n));
    17     return 0;
    18 }

    输入:28 8     输出:gcd = 4

    那么再水一把:求一个最小公倍数(least common multiple)。

    人人都知道,lcm(m, n) = m * n / gcd(m, n) 所以

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 using namespace std;
     7 int m, n;
     8 int gcd(int x, int y)
     9 {
    10     if(y == 0) return x;
    11     return (gcd(y, x % y));
    12 }
    13 int main()
    14 {
    15     scanf("%d%d", &m, &n);
    16     printf("lcm=%d
    ", m * n / gcd(m, n));  //别再看了,就改了这一行
    17     return 0;
    18 }
  • 相关阅读:
    接口
    java基础
    java的反射
    按照字典序打印所有的字符串
    求幂的问题
    时间复杂度与空间复杂度
    孩子们的游戏(圆圈中最后剩下的数)
    约瑟夫环问题
    翻转单词顺序列
    复杂链表的复制
  • 原文地址:https://www.cnblogs.com/mrclr/p/8325714.html
Copyright © 2020-2023  润新知