Иллюстрированный самоучитель по Mathematica 5

Факторизация целых чисел с помощью функции FactorInteger. Факторизация чисел Мерсенна.

Кроме того, он и читается с трудом. Поэтому для преобразования вывода в привычную форму лучше всего использовать макрос, написанный на VBA для Word 2002.

Sub Factorization() i
'Обработка списка множителей
Dim strTemp As String
Dim 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 Then
Selection.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 If
Loop While strTemp = ","
And (Response = vbYes)
'Выполняем цикл, пока не обработаем все
'множители 1 или не обнаружим ошибку
  
If strTemp = "}" Then
' Список должен заканчиваться закр. скобкой
Selection.Delete Unit: = wdCharacter, Count: = 1
' Удаляем скобку
Else
Response = MsgBox("***0шибка: в конце списка нет }... " _
+ Msg, Style, Title)
If Response = vbYes Then
' Пользователь выбрал Yes (Да)
MyString = "Yes"
' Запомним, что выбрал пользователь
Else ' Пользователь выбрал No (Нет)
MyString = "No"
' Запомним, что выбрал пользователь
End If End If End If End Sub
Function Multiplier() i
' Обработка множителя (и его степени)
Dim strTemp As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Хотите продолжить?"
' Вопрос к пользователю
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.