Excel宏代码原创分享,转发请注明来源,作者:王欢为,WX:13772568903。
功能:求多个数的最大公因数。
格式如下:
无参数则返回1
例如:FFCfactor()
返回:1
一个参数则返回该参数
FFCfactor(正整数a),返回a
例如:FFCfactor(46)
返回:46
两个或两个以上的参数,则返回这些参数的最大公因数。
FFCfactor(正整数a, 正整数b, 正整数c, 正整数d),返回a、b、c、d的最大公因数
例如:FFCfactor(24,26,28)
返回:2
说明:本函数使用的是辗转相除法求解最大公因数。代码比较简单。
函数代码如下:
Function FFCfactor(ParamArray Arr1()) As Long
'Excel宏代码原创分享,转发请注明来源,作者:王欢为,WX:13772568903。
'功能:求多个数的最大公因数。
Dim ii%, jj%, Len1%, Num1#, Num2&, Num3&
Len1 = UBound(Arr1)
If Len1 = -1 Then '没有参数,返回1。
FFCfactor = 1
Exit Function
End If
If Len1 = 0 Then '一个参数,判断返回该参数。
FFCfactor = Arr1(0)
Exit Function
End If
'两个及以上参数,求这些参数的最大公约数为1。
Num2 = Arr1(0)
Num3 = 0
For ii = 1 To Len1
Num3 = Num2 + Num3
Num2 = Arr1(ii)
Do While Num2 * Num3 <> 0
Num2 = Num2 Mod Num3
If Num2 * Num3 <> 0 Then
Num3 = Num3 Mod Num2
End If
Loop
If Num2 + Num3 = 1 Then
FFCfactor = 1
Exit Function
End If
Next
FFCfactor = Num2 + Num3
End Function