求两个不同正整数的最大公约数和最小公倍数

/*
求两个不同正整数的最大公约数和最小公倍数 
*/
#include <stdio.h>
int max_gys(int m,int n);
int min_gbs(int m,int n); 
int main(){
    int m,n;
    int gys,gbs;
    printf("请输入2个不同的正整数:"); 
    scanf("%d,%d",&m,&n);
    gys=max_gys(m,n);
    gbs=min_gbs(m,n);
    printf("%d和%d的最大公约数是%d,最小公倍数是%d\n",m,n,gys,gbs); 
    return 0;
}
int max_gys(int m,int n){
    int t,r;
    if(m<n){//让m>n 
        t=m;
        m=n;
        n=t;
    }
    /*最大公约数可以通过辗转相除的方式实现*/
    do{
        r=m%n; 
        m=n;
        n=r;
    }while(r!=0);
    return m;
}
int min_gbs(int m,int n){
    int i;
    i=m*n/max_gys(m,n);
    return i;//最小公倍数的方法可以通过让m*n除以m和n的最大公约数实现 
} 

 收录于文章《885程序设计考点狂背总目录中

posted @ 2020-07-27 13:03  薄眠抛却陈年事。  阅读(429)  评论(0编辑  收藏  举报