Sub main()
Dim arr, x, myLCD As Double
arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) 'массив значений
myLCD = 1
For Each x In arr
myLCD = myLCD * x / myGCD(myLCD, x)
Next
Debug.Print myLCD 'наименьшее общее кратное
End Sub
Sub main2()
Dim arr, x, myLCD As Double
arr = Array(2, 3, 17, 4, 3, 3)
myLCD = 1
For Each x In arr
myLCD = myLCD * x / myGCD(myLCD, x)
Next
Debug.Print myLCD 'наименьшее общее кратное
End Sub
Sub main3()
Dim arr, x, myLCD As Double
arr = Array(17, 19, 23, 29, 31, 37, 41, 43, 47, 53)
myLCD = 1
For Each x In arr
myLCD = myLCD * x / myGCD(myLCD, x)
Next
Debug.Print myLCD 'наименьшее общее кратное
End Sub
Function myGCD(ByVal a As Double, ByVal b As Double) As Double 'функция расчета наибольшего общего делителя
Dim t As Double
If a < b Then t = a: a = b: b = t
While b
t = b
b = myMOD(a, b)
a = t
Wend
myGCD = a
End Function
Function myMOD(a As Double, b As Double) As Double 'остаток от деления для чисел типа Double
myMOD = a - Fix(a / b) * b
End Function