最大公约数和最小公倍数怎么算啊!球算法

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 16:57:54

最大公约数和最小公倍数怎么算啊!球算法
最大公约数和最小公倍数怎么算啊!
球算法

最大公约数和最小公倍数怎么算啊!球算法
最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf),指某几个整数共有因子中最大的一个.
例如,12和30的公约数有:1、2、3、6,其中6就是12和30的最大公约数.
两个整数的最大公约数主要有两种寻找方法:
* 两数各分解质因子,然后取出同样有的项乘起来
* 辗转相除法(扩展版)
和最小公倍数(lcm)的关系:gcd(a,b)×lcm(a,b) = ab
两个整数的最大公因子可用于计算两数的最小公倍数,或分数化简成最简分数.
两个整数的最大公因子和最小公倍数中存在分配律:
* gcd(a,lcm(b,c)) = lcm(gcd(a,b),gcd(a,c))
* lcm(a,gcd(b,c)) = gcd(lcm(a,b),lcm(a,c))
在坐标里,将点(0,0)和(a,b)连起来,通过整数坐标的点的数目(除了(0,0)一点之外)就是gcd(a,b).
几个数公有的倍数叫做这几个数的公倍数,其中最小的一个叫做这几个数的最小公倍数.
最小公倍数的表示:
数学上常用方括号表示.如[12,18,20]即12、18和20的最小公倍数.
最小公倍数的求法:
求几个自然数的最小公倍数,有两种方法:
(1)分解质因数法.先把这几个数分解质因数,再把它们一切公有的质因数和其中几个数公有的质因数以及每个数的独有的质因数全部连乘起来,所得的积就是它们的最小公倍数.
例如,求[12,18,20],因为12=22×3,18=2×32,20=22×5,其中三个数的公有的质因数为2,两个数的公有质因数为2与3,每个数独有的质因数为5与3,所以,[12,18,20]=2^2×3^2×5=180.(可用短除法计算)
(2)公式法.由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积.即(a,b)×[a,b]=a×b.所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数.
例如,求[18,20],即得[18,20]=18×20÷(18,20)=18×20÷2=180.求几个自然数的最小公倍数,可以先求出其中两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数,依次求下去,直到最后一个为止.最后所得的那个最小公倍数,就是所求的几个数的最小公倍数.

最小公倍
4 5 6
的最小公倍4乘5乘6
120

#include
int min_beishu(int m,int n,int max)//最小公倍数等于两数之积除以最大公约数
{
int ji;
ji=m*n/max;
return ji;
}
int max_yueshu(int m,int n)//求最大公约数
{
...

全部展开

#include
int min_beishu(int m,int n,int max)//最小公倍数等于两数之积除以最大公约数
{
int ji;
ji=m*n/max;
return ji;
}
int max_yueshu(int m,int n)//求最大公约数
{
int temp;
do
{
temp=m%n;
m=n;
n=temp;
}while(temp!=0);
return m;
}
int main()
{
int m,n,max,min;
printf("please enter m n:");
scanf("%d%d",&m,&n);
max=max_yueshu(m,n);
min=min_beishu(m,n,max);
printf("max_yushu is %d min_beishu is %d\n",max,min);
system("pause");
return 0;
}

收起

用公约数同除两数 最后把所有公约数相× 为最大公约数
最大公约数乘以除完剩的两个数 为最大公倍数

给你说了 你还不是不懂 你把数字说出来 就OK了