Не стал соревноваться с гуру. Просто скопировал с инета:
Function MCH_F$(X&)
Dim n1&, n2&, A(), j&, U&, Y&
j = 0
Select Case X
Case 0 To 3, 5, 7
MCH_F = "Prime"
Exit Function
End Select
Do While X Mod 2 = 0
ReDim Preserve A(j)
A(j) = 2
X = X / 2
j = j + 1
Loop
Do While X Mod 3 = 0
ReDim Preserve A(j)
A(j) = 3
X = X / 3
j = j + 1
Loop
U = X \ 2
n1 = 5
n2 = 7
Do While n1 < U
Y = X
Do While X Mod n1 = 0
ReDim Preserve A(j)
A(j) = n1
X = X / n1
j = j + 1
Loop
If X Mod n2 = 0 Then
ReDim Preserve A(j)
A(j) = n2
X = X / n2
j = j + 1
End If
If X <> Y Then
U = X \ 2
End If
n1 = n1 + 6
n2 = n1 + 2
Loop
If j = 0 Then
MCH_F = "Prime"
Else
If X <> 1 Then
ReDim Preserve A(j)
A(j) = X
End If
MCH_F = Join(A, "*")
End If
End Function
Проверил работает. Таких программок в сети море. Есть встроенные функции разложения во многих программах. В Wolthram mathematica есть FactorInteger очень мощная функция. Появись у меня такая программка лет 30 назад, я бы даже деньги немалые заработал. Разработчики PGP предлагали премии до миллиона баксов за разложение числа на пару простых множителей. Теперь отменили. Слишком хороши компьютеры стали. А сами числа для шифрования заоблачной длины теперь применяют. Впрочем и от шифрования простыми числами уже отошли. Пользуются другими методами -эллиптическими кривыми, например. Но сам вопрос по-прежнему актуален. Универсального метода разложения на множители нет. Если бы вы предложили какие-нибудь идеи в этой области мне было бы интересно. Да и всему миру тоже.
