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

一、求两个数(A和B)的最大公约数:

1.算法思路: 辗转法

  ①A作为被除数,B作为除数,C=A%B

  ②如果C==0,B为最大公约数

  ③否则,继续取模运算,A=B,B=C,C=A%B,同上

2.例子:

  int CountMaxComYueShu(int A,int B)
{
  if((0==A)||(0==B))
  {
   return 0;
  } 
 
  int C=A%B;
  while(C!=0)
  {
    A=B;
    B=C;
    C=A%B;
  }
  return B;
}

二、求两个数(A和B)的最小公倍数

1.算法思路:

  方法(1).利用最大公约数C求最小公倍数D=A*B/C

  方法(2).循环查找法,递增较大数的倍数,找到能同时整除两个数的倍数为止

2.例子:循环查找法:

int MinCommondTime(int m,int n)//求最小公倍数
{
  if(0==m)
    return n;
  else if(0==n)
    return m;
  int max=m*n;
  int k=m;
  if(n>m)
   k=n;
  int j=k;
  for(int i=0;j<=max;j=k*i)
  {
     if((j%m==0)&&(j%n==0))
     return j;
     i++;
  }
  return -1;

    

原文地址:https://www.cnblogs.com/JYsharp/p/3405276.html