代码实现如下:
#include <iostream>
using namespace std;
int GetG(int m,int n)
{
if(m<n)
{
m^=n;
n^=m;
m^=n;
}
if(n==0)
return m;
return GetG(n,m%n);
}
int GetNG(int* arr,int n)
{
//int imax=arr[0];
//for(int i=1;i<n;i++)
//imax=getZuidagongyue(imax,arr[i]);
//return imax;
if(n==1)
return *arr;
return GetG(arr[n-1],GetNG(arr,n-1));
}
/*int GetG(int *arr, int len)
{
int iMax = arr[0], iCurr, iRemainder;
for(int i = 1; i < len; i++)
{
iCurr = arr[i];
if (iMax < iCurr)
{
iMax ^= iCurr;
iCurr ^= iMax;
iMax ^= iCurr;
}
iRemainder = iMax % iCurr;
while (iRemainder)
{
iMax = iCurr;
iCurr = iRemainder;
iRemainder = iMax % iCurr;
}
iMax = iCurr;
}//for
return iMax;
}
*/
int GetLCM(int m,int n)
{
return m*n/GetG(m,n);
}
int GetNLCM(int *arr, int len)
{
if(len==1)
return *arr;
return GetLCM(arr[len-1],GetNLCM(arr,len-1));
}
int main()
{
cout<<"-----------------G-------------------"<<endl;
cout<<"5767 and 4453 : "<<GetG(5767,4453)<<endl;
int arr[6]={10,15,250,40,30,80};
cout<<"10,15,250,40,30 and 80 : "<<GetNG(arr,6)<<endl;
cout<<"-----------------LCM-------------------"<<endl;
cout<<"10,15,250,40,30 and 80 : "<<GetNLCM(arr,6)<<endl;
getchar();
return 0;
}
我晕,csdn不让发含G*C*D单词的文章!