Факторизация целых чисел с помощью функции FactorInteger. Факторизация чисел Мерсенна.
Кроме того, он и читается с трудом. Поэтому для преобразования вывода в привычную форму лучше всего использовать макрос, написанный на VBA для Word 2002.
Sub Factorization() i 'Обработка списка множителей Dim strTemp As StringDim Msg, Style, Title, Help, Ctxt, Response, MyString, R Msg = "Хотите продолжить?" ' Вопрос Style = vbYesNo + vbCritical + vbDefaultButton2 ' Кнопки Title = "Разложение на множители"' Заголовок окна Response = vbYes ' Пока ошибки не обнаружены Selection.Find.ClearFormatting 'Очистка формата в поле поиска With Selection.Find .Text = "{" ' Что ищем - открывающую скобку .Forward = True.Wrap = wdFindContinue .Format = False.MatchCase = False.MatchWholeWord = False.MatchWildcards = False.MatchSoundsLike = False.MatchAllWordForms = False End With Selection.Find.Execute 'Находим открывающую фигурную скобку списка strTemp = Selection.Text If strTemp = "{" Then' Если нашли скобку, обрабатываем список Selection.Delete Unit: = wdCharacter, Count: = 1 ' Удаляем скобку Do ' В цикле обрабатываем все элементы списка Response = Multiplier ' Обработка множителя и его показателя If Response = vbYes ThenSelection.MoveRight Unit: = wdCharacter, Count: = 1, _ Extend: = wdExtend strTemp = Selection.Text ' Выбираем очередной символ If strTemp = "," Then' Это должна быть запятая Selection.Delete Unit: = wdCharacter, Count: = l ' Удаляем ее Selection.Font.Reset ' Сбрасываем форматирование Selection.InsertSymbol Font: = "Symbol", _ CharacterNumber: = - 3916, Unicode: = True' Знак умножения End If ' Запятую заменили знаком умножения Else R = MsgBox("***Ошибка: неправильно записан множитель." _ + Msg, Style, Title) End IfLoop While strTemp = ","And (Response = vbYes) 'Выполняем цикл, пока не обработаем все 'множители 1 или не обнаружим ошибку If strTemp = "}" Then' Список должен заканчиваться закр. скобкой Selection.Delete Unit: = wdCharacter, Count: = 1 ' Удаляем скобку ElseResponse = MsgBox("***0шибка: в конце списка нет }... " _ + Msg, Style, Title) If Response = vbYes Then' Пользователь выбрал Yes (Да) MyString = "Yes"' Запомним, что выбрал пользователь Else ' Пользователь выбрал No (Нет) MyString = "No"' Запомним, что выбрал пользователь End If End If End If End SubFunction Multiplier() i ' Обработка множителя (и его степени) Dim strTemp As StringDim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "Хотите продолжить?"' Вопрос к пользователю