最小公倍数怎么求
两个数的最小公倍数用算法怎么算int MaxAB(int a,int b)
if(a>b && !a%b || a==b)return a;
if(a
//先求最大公约数
int nMul;
int nMinAB = (a>b)?(nMul=b,a%b):(nMul=a,b%a);
while(nMinAB)
{
int nTemp = nMinAB;
nMinAB = nMul % nMinAB;
nMul = nTemp;
}
return A*B/nMul;
}(1)分解质因数法
先把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积(如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数)。
比如求45和30的最小公倍数。
45=3*3*5
30=2*3*5
不同的质因数是2,3,5。3是他们两者都有的质因数,由于45有两个3,30只有一个3,所以计算最小公倍数的时候乘两个3.
最小公倍数等于2*3*3*5=90
又如计算36和270的最小公倍数
36=2*2*3*3
270=2*3*3*3*5
不同的质因数是5。2这个质因数在36中比较多,为两个,所以乘两次;3这个质因数在270个比较多,为三个,所以乘三次。
最小公倍数等于2*2*3*3*3*5=540
20和40的最小公倍数是40
(2)公式法
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。
例如,求,即得=18×20÷(18,20)=18×20÷2=180。求几个自然数的最小公倍数,可以先求出其中两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数,依次求下去,直到最后一个为止。最后所得的那个最小公倍数,就是所求的几个数的最小公倍数。输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
2.程序源代码:
main()
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1
{ temp=num1;
num1=num2;
num2=temp;
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
temp=a%b;
a=b;
b=temp;
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}#include
int gcd(int a, int b)
int r = 0;// remainder
int q;// quotient
int d;
d = (a >= b ? a : b);
if (d == a)
q = b;
else
q = a;
printf("d: %d\t q: %d\n", d, q);
do {
r = d % q ;
if (r == 0)
break;
d = q;
q = r;
} while (r != 0);
printf("d: %d\t q: %d\n", d, q);
return q;
int lcm(int a, int b)
if (a != 0 && b != 0)
页:
[1]