刚刚写的,调用getCommon形参是一个数组,这样不但可以算3个数几十几百个都可以//最大公倍数 private static int getMaxCommonDivisor(int nNum1, int nNum2) { int a = Math.min(nNum1,nNum2); int b = Math.max(nNum1,nNum2); int c = a;
while (c!=0) { a = c; c = b%a; b = a; }
return a;
}
//最小公约数 private static int getMinCommonMultiple(int nNum1, int nNum2) { return (nNum1*nNum2/getMaxCommonDivisor(nNum1, nNum2)); }
这个是只匹配cat,也就是匹配第一个cat
private static int getMaxCommonDivisor(int nNum1, int nNum2)
{
int a = Math.min(nNum1,nNum2);
int b = Math.max(nNum1,nNum2);
int c = a;
while (c!=0)
{
a = c;
c = b%a;
b = a;
}
return a;
}
//最小公约数
private static int getMinCommonMultiple(int nNum1, int nNum2)
{
return (nNum1*nNum2/getMaxCommonDivisor(nNum1, nNum2));
}
//求多个数的最大公约数与最小公倍数
private static int[] getCommon(int[] nArr)
{
int nMaxCommonDivisor = 0;
int nMinCommonMultiple = 0;
if (nArr != null && nArr.length>1)
{
nMaxCommonDivisor = getMaxCommonDivisor(nArr[0],nArr[1]);
nMinCommonMultiple = getMinCommonMultiple(nArr[0],nArr[1]);
for(int n=2; n<nArr.length; n++)
{
nMaxCommonDivisor = getMaxCommonDivisor(nMaxCommonDivisor,nArr[n]);
nMinCommonMultiple = getMinCommonMultiple(nMinCommonMultiple,nArr[n]);
}
}
return new int[]{nMaxCommonDivisor,nMinCommonMultiple};
}