• 最大公约数与最小公倍数


    1.最大公约数

    一般使用辗转相除法即欧几里得算法来计算。

    设有两数a,b,求这两个数的最大公约数

    代码如下:

    这里有一个性质:设有两数a,b,求这两个数的最大公约数

    gcd(a,b)=gcd(b,a%b)   且等同于 gcd(a,b)=gcd(b,a-b),因为多减几次相当于a%b了

    这里使用了三目运算符:x?a:b

    当x为true时,整个表达式为a的值;当x为false时,整个表达式为b的值。

    形式(1)

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int gcd(int a,int b)
     5 {
     6     return b?gcd(b,a%b):a;
     7 }
     8 int main()
     9 {
    10     int a,b;
    11     cin>>a>>b;
    12     int ans=gcd(a,b);
    13     cout<<ans;
    14     return 0;
    15 }

    形式(2)

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int gcd(int x,int y)
    {
        int t;
        while(y)
        {
            t=x%y;
            x=y;
            y=t;
        }
        return x;
    }
    int main()
    {
        int a,b;
        cin>>a>>b;
        int ans=gcd(a,b);
        cout<<ans;
        return 0;
    }

    2.最小公倍数

    可利用公式

    gcd(a,b)*lcm(a,b)=a*b

    来计算

    设有两数a,b,求这两个数的最小公倍数

    代码如下:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    typedef long long ll;
    int gcd(int a,int b)
    {
        return b?gcd(b,a%b):a;
    }
    int main()
    {
        int a,b;
        cin>>a>>b;
        int ans=(a*b)/gcd(a,b);
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    Google API 详解
    Why should I use SASS?
    Google Maps and ASP.NET
    IP摄像机
    解决母版页报错“内容控件必须是内容页中的顶级控件,或是引用母版页的嵌套母版页。”
    sass服务
    C#中操作符的重载(Time类)
    第一次面试
    单链表(C++)
    指针和引用的区别(C++)
  • 原文地址:https://www.cnblogs.com/theshorekind/p/14288606.html
Copyright © 2020-2023  润新知