求两个数的最大公约数和最小公倍数

        对于求解两个数的最小公约数,能够通过两种方法进行解决,下面是具体的程序:

程序一:

  • #include <stdio.h>

  • int main()

  • {

  •          int a[2];

  •          int i,min,max;

  •          for(i=0;i<2;i++)

  •                scanf("%d",&a[i]);

  •          if(a[0]<a[1])

  •           {

  •                 min=a[0];

  •                 max=a[1];

  •            }

  •           else

  •            {

  •                 min=a[1];

  •                 max=a[0];

  •            }

  •           for(i=min;i>0;i--)

  •                 if(max%i==0&&min%i==0)

  •                  { 

  •                           printf("%d ",i);

  •                             break;

  •                   }

  • return 0;

  • }

 

程序二:

  • #include <stdio.h>

  • int main()

  • {

  •         int num1=0;

  •         int num2=0;

  •         int tmp;

  •                scanf("%d%d",&num1,&num2);

  •         while(tmp=num1%num2)

  •         {

  •                 num1=num2;

  •                 num2=tmp;

  •         }

  •          printf("最大公约数:%d\n",num2);

  • return 0;

  • }

 

        对于上面的两个程序,第一个程序利用最大公约数最大是两个数中较小的特点,通过循环实现让较小的整数逐渐较小,判断最大数师傅能够整除依次减小后的整数,如果能够整除,则这个数为这两个整数的最大公约数。

        第二个程序的算法核心是辗转相除法,定义两个整数,通过辗转相除的方式直接能够得到两个整数的最大公约数。相比较来说,第二个方法能够更加简单。

       

         对于求解两个整数的最小公倍数,可以在求解最大公约数的基础上,通过两个整数之积除以最大公约数求得最小公倍数。下面是具体程序:

  • #include <stdio.h>

  • int main()

  • {

  •        int num1=0;

  •        int num2=0;

  •        int tmp,a,b;

  •              scanf("%d%d",&num1,&num2);

  •              b=num2;

  •        while(tmp=num1%num2)

  •        {

  •               num1=num2;

  •               num2=tmp;

  •         }

  •               a=(num1*b)/num2;

  •         printf("最大公约数:%d\n",num2);

  •         printf("最小公倍数:%d\n",a);

  • return 0;

  • }

 

本文出自 “无心的执着” 博客,请务必保留此出处http://10740590.blog.51cto.com/10730590/1699681

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值