正文

求两数的最大公约数和最小公倍数2006-01-15 20:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/clever101/9668.html

分享到:

 从今天开始,我决心利用寒假把谭浩强的《C程序设计》(从第6章到第13章)的所有习题做一遍,发表在我的blog上。

算法思路:  可以有三种方法求两数的最大公约数。设m>n

    1. k1变到n,能同时整除mn的最大的k即为所求。

    2. kn变到1,第一个能同时整除mnk即为所求。

    3. 使用辗转相除法。辗转相除法的算法为:首先将 m除以 nm>n)得余数 r,再用余数  r 去除原来的除数,得新的余数,重复此过程直到余数为 0时停止,此时的除数就是m n的最大公约数。 经常使用的算法是辗转相除法。  m n的最小公倍数: m n的积除以 m n 的最大公约数。我的程序使用的是辗转相除法。由于程序比较简单,所以没有加注释。程序运行环境:Windows2000, VC++6.0。

#include

void  MaxandMin(long Num1,long Num2)
{
 long Temp=0;
 if(Num1>=Num2)     
 {
  Temp=Num2;
  while((Num1%Num2)!=0) 
  {
   Num2=Num1%Num2;
  }
  printf("最大公约数为%d\n",Num2);
  Temp=( Num1*Temp )/Num2;
  printf("最小公倍数为%d\n",Temp);
 }
 else
 {
  Temp=Num1;
  while((Num2%Num1)!=0)
  {
   Num1=Num2%Num1;
  }
  printf("两数的最大公约数为%d\n",Num1);
  Temp=( Num2*Temp )/Num1;
  printf("两数的最小公倍数为%d\n",Temp);
 }
   
}

int main()
{
 long Num1=0,Num2=0;
 printf("请输入两个整数:\n");
 scanf("%d%d",&Num1,&Num2);
 MaxandMin(Num1,Num2);
 return 1;
}

阅读(10548) | 评论(12)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册