zoukankan      html  css  js  c++  java
  • 求最大公约数和最小共倍数的方法(除穷举)

    求最小共倍数:

    最小共倍数=两数的成绩÷最大公约数。

    求最大公约数:

    1. 辗转相除法
    2. 相减法

    辗转相处:

    有两整数a和b:

    ① a%b得余数c

    ② 若c=0,则b即为两数的最大公约数

    ③ 若c≠0,则a=b,b=c,再回去执行①

    例如求27和15的最大公约数过程为:

    27÷15 余1215÷12余312÷3余0因此,3即为最大公约数

    #include<bits/stdc++.h>
    using namespace std;
    int main(){//  辗转相除法求最大公约数 
        int a,b,c;
        scanf("%d%d",&a,&b);
        int m=a,n=b;
        while(c!=0){// 余数不为0,继续相除,直到余数为0 
            c=a%b;
            a=b;
            b=c;
        }
        printf("The largest common divisor:%d
    ",a);//注意这里不是b,因为跳出循环时b已经是c了
        printf("The least common multiple:%d",m*n/a);
        return 0;
    }

    相减法:

    有两整数a和b:

    ① 若a>b,则a=a-b

    ② 若a<b,则b=b-a

    ③ 若a=b,则a(或b)即为两数的最大公约数

    ④ 若a≠b,则再回去执行①

    例如求27和15的最大公约数过程为:

    27-15=12( 15>12 ) 15-12=3( 12>3 )

    12-3=9( 9>3 ) 9-3=6( 6>3 )

    6-3=3( 3==3 )

    因此,3即为最大公约数

    #include<bits/stdc++.h>
    using namespace std;
    int a,b;
    int main(){
        scanf("%d%d",&a,&b);
        int m=a,n=b;
        while(a!=b){
            if(a>b)a=a-b;
            if(a<b)b=b-a;
        }
        printf("The largest common divisor:%d
    ",a);
        printf("The least common multiple:%d",m*n/a);
        return 0;
    }

    洛谷小题:

    #include<bits/stdc++.h>
    using namespace std;
    int x,y;
    int ans;
    int gcd(int a,int b){//求最大公约数
        //if(a<b)swap(a,b);
        if(a%b==0)return b;
        if(a==b)return b;
        return gcd(b,a%b);
    }
    
    int lcm(int a,int b){//求最小共倍数
        return a*b/gcd(a,b);
    }
    
    int main(){
        scanf("%d%d",&x,&y);
        for(int i=x;i<=y;i++){
            int j=x*y/i;
            if(gcd(i,j)==x&&lcm(i,j)==y){
                ans++;
            }
        }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    【转载】如何保证消息的顺序性?
    【转载】如何保证消息的可靠性传输?
    Java 浅拷贝与深拷贝的区别
    int 与 Integer 的区别
    Systemd
    如何查看systemctl启动服务的日志journalctl
    centos7安装killall命令
    关闭root用户的ssh登录
    react带ts创建
    ts-类型别名、类型断言
  • 原文地址:https://www.cnblogs.com/LightyaChoo/p/13226840.html
Copyright © 2011-2022 走看看