求两个正数的最大公约数和最小公倍数
一、求两个数(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;
}