求数组的最小公倍数算法
有一数组:4 6,7,1,2
求他的最小公倍数。
请帮忙给个思路或贴代码。
谢谢!
问题点数:100、回复次数:5Top
1 楼vangao(阳光一人)回复于 2003-06-04 11:07:50 得分 0
difficult??Top
2 楼lovepink(StoneCool)回复于 2003-06-04 11:22:45 得分 0
先找公约数,然后将公约数及商相乘Top
3 楼8alang8(alang)回复于 2003-06-04 11:40:22 得分 30
找两个数的最小公倍数,这个简单吧?
用归并法,先两两分组,求出每组两个数的最小公倍数。
然后对第一步得到的最小公倍数数组进行同样的算法直到只剩一个数为止,这个数就是要求的最小公倍数了。
Top
4 楼libi(风自吟)回复于 2003-06-04 11:57:16 得分 30
很简单啦,按顺序一路求最小公倍数就可以了。
例如先求4和6的最小公倍数,得到12,再就求12和7的最小公倍数得84,接着求84和1的最小公倍数.....,最后得84。
两个数的最小公倍数等于它们的积除以它们的最大公约数,最大公约数用辗转除法。Top
5 楼HUNTON(追求完美)回复于 2003-06-04 12:18:52 得分 40
下面是计算两个的,多个的多算几次就可以了
//计算两正整数的最大公约数
int MaxGongYue(int Data1,int Data2)
{
int Temp;
if(Data1 <= 0 || Data2 <= 0) return -1 ;
if(Data1 == Data2) return Data1;
if(Data1 < Data2)
{
Temp = Data2 % Data1 ;
if(Temp == 0) return Data1 ;
if(Temp == 1) return 1 ;
else return MaxGongYue(Data1,Temp) ;
}
else
{
Temp = Data1 % Data2 ;
if(Temp == 0) return Data2 ;
if(Temp == 1) return 1 ;
else return MaxGongYue(Data2,Temp) ;
}
}
//计算两正整数的最小公倍数
int MinGongBei(int Data1,int Data2)
{
if(Data1 <= 0 || Data2 <= 0) return -1 ;
if(Data1 == Data2) return Data1;
else return (Data1 * Data2) / MaxGongYue(Data1,Data2) ;
}
Top




