c语言实现最小公倍数和最大公约数

c语言实现最小公倍数和最大公约数

最小公倍数

  • 最小公倍数:除0以外的公倍数中最小的那个
  • 需要判断输入的两个数的大小 定义max和min函数
  • max%min==0 则直接返回max
    如: 12 ,3 最小公倍数为12
  • max % min !=0时 需要用到迭代
    j的范围: j >max && j <min*max
    满足 j%min == 0 && j % max ==0 j就是最小公倍数

最大公约数

最大公约数=两数乘积/最小公倍数
辗转相除法:
x>y的情况
1.x%y 得余数temp
2.temp==0 y表示最大公约数
3.temp !=0 x=y; y=temp; 回到1

int commonDivisor(int x,int y)
{
   int maxOne=max(x,y);
   int minOne=min(x,y);
   if(maxOne%minOne== 0){
       return minOne;
   }else{
       int temp = maxOne%minOne;
       maxOne = minOne;
       minOne = temp;
       commonDivisor(maxOne,minOne);    /*递归调用*/
   }
}

完整代码

#include <stdio.h>

int main(void){
    int min(int x,int y);                   //返回最小数
    int max(int x,int y);                   //返回最大数
    int commonMultiple(int x,int y);        //最小公倍数
    int commonDivisor(int x,int y);         //最大公约数
    int a,b;        
    printf("Please enter a:\n");
    scanf("%d",&a);
    printf("Please enter b:\n");
    scanf("%d",&b);
    int multiple = commonMultiple(a,b);
    printf("The least common multiple is : %d\n",multiple);
    int divisor = commonDivisor(a,b);
    printf("The greatest common divisor is : %d\n",divisor);
    printf("End of procedure !\n");
}

int min(int x,int y)
{
    return x<y ? x : y;
}

int max(int x,int y)
{
    return x>y ? x : y;
}

int commonMultiple(int x,int y)
{
    int maxOne=max(x,y);
    int minOne=min(x,y);
    if(maxOne%minOne==0){
        return maxOne;
    }else{
        for(int j=maxOne+1;j<=minOne*maxOne;j++){
            if(j % minOne == 0 && j % maxOne ==0){
                return j;
            }
        }
    }
}

int commonDivisor(int x,int y)
{
     // 最大公约数 =  x*y/最小公倍数         
   return x*y/commonMultiple(x,y);
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值