Математика. Настоящий учебник посвящен системе Mathematica прикладному пакету компьютерной алгебры, при помощи которого можно решать любые задачи, в которых в той или иной форме встречается математика
Скачать 4.43 Mb.
|
Что при этом отвечает сопряженному и обратному числам? При написании программ полезно понимать, что Mathematica упорядо- чивает комплексные числа следующим несколько необычным образом: • В первую очередь сравниваются вещественные части. • При равенстве вещественных частей сравниваются абсолютные значе- ния мнимых частей. • Из пары сопряженных комплексных чисел первым указывается то, мнимая часть которого отрицательна. 1.2. Не включая компьютера расположите числа 1, −1, i, −i, 1 + i, 1 − i, −1 + i, −1 − i, −1 + 2i, −1 − 2i, 1 + 2i, 1 + 2i, 0 в используемом системой порядке. В следующей задаче ω = − 1 2 + i √ 3 2 , ω 2 = ω = − 1 2 − i √ 3 2 . После чтения § 3 она моментально решается устно, пока же мы предлагаем провести непосредственные вычисления. 1.3. Вычислите • (a + b)(a + bω)(a + bω 2 ), • (aω + bω 2 )(bω + aω 2 ), • (a + bω + cω 2 )(a + bω 2 + cω). • (a + b + c)(a + bω + cω 2 )(a + cω 2 + bω), • (a + bω + cω 2 ) 3 + (a + bω 2 + cω) 3 На самом деле следующая задача предполагает решение в терминах три- гонометрической, а не алгебраической формы, но она служит хорошей ил- люстрацией того, что многократное альтернированное применение Comp- lexExpand и Simplify или FullSimplify может несколько раз приводить к новой, все более простой форме. 1.4. Вычислите z = p 2 − √ 3 + i p 2 + √ 3 p√ 2 + 1 + i p√ 2 − 1 . 310 Решение. Устное вычисление модуля и аргумента числителя и знамена- теля z показывает, что z = 4 q 2 cos 7π 24 + i sin 7π 24 . Разумеется, предлагая подобную задачу в контрольной работе мы подра- зумеваем именно такое решение. Интересно, однако, сколько времени по- надобится, чтобы придти к тому же результату в алгебраической форме. Вычисление FullSimplify[z] дает представление z как корня многочлена с рациональными коэффициентами: Root[4-4#1^2+2#1^4-2#1^6+#1^8&,6] Иными словами, утверждается, что z есть корень уравнения x 8 −2x 6 +2x 4 − 4x 2 + 4 = 0. Попробуем вначале выделить вещественную и мнимую часть z, и только потом упростить, FullSimplify[ComplexExpand[z]]. При этом получится уже чуть более явный ответ r 1 2 (1 + i) − (1 − i) √ 3 Кажется, что не будет никакого вреда, если теперь уже в этом выра- жении выделить вещественную и мнимую часть, но при этом получается достаточно жуткое выражение, которое мы не решаемся здесь воспроизве- сти без промежуточного упрощения, Simplify[ComplexExpand[FullSimplify[ComplexExpand[z]]]] дает z = 4 q 2 i ∗ cos 5π 24 + sin 5π 24 . Но вот применение FullSimplify приводит к полному успеху, а именно, вычисляя FullSimplify[ComplexExpand[FullSimplify[ComplexExpand[z]]]] мы получим ( −1) 7/24 2 1/4 , так что теперь еще одно применение ComplexEx- pand как раз и даст ответ, указанный в самом начале! До сих пор мы обсуждали вычисления с точными комплексными чис- лами. Однако, как и вещественные числа, комплексные числа бывают точ- ными и приближенными. А именно, вещественная и/или мнимая части комплексного числа могут быть приближенными вещественными числа- ми — по умолчанию машинными. Важнейший нюанс, который следует иметь в виду, проводя приближенные вычисления, состоит в том, что точ- ность/приближенность вещественной и мнимой части оцениваются отдель- но! Так, например, вычисление Head[1+0*I] дает Integer, а вычисление 311 Head[1.+0*I] — Real. Иными словами, система считает, что мнимая часть этих чисел точно равна 0, так что первое из них целое, а второе — при- ближенное вещественное число. Чтобы указать, что мнимая часть лишь приближенно равна 0, нужно явным образом поставить там десятичную точку. Числа 1+0.*I и 1.+0.*I оба имеют заголовок Complex 2. Тригонометрическая запись комплексного числа. 104 В предыдущем пункте комплексное число z = a+bi рассматривалось как точка вещественной плоскости (a, b), проекции которой на вещественную и мнимую оси равны a и b, соответственно. Сложение таким образом истол- кованных комплексных чисел совпадает с обычным сложением векторов. Оказывается, однако, что для умножения комплексных чисел намного удобнее пользоваться другой системой координат — полярной. В этой си- стеме положение любой точки на плоскости определяется двумя числами: расстоянием r от начала координат до этой точки и углом ϕ между поляр- ной осью и радиусом-вектором данной точки, отсчитываемым в положи- тельном направлении. Положительное вещественное число r = √ a 2 + b 2 называется модулем комплексного числа z = a + bi и обозначается |z|. По- лярный угол ϕ точки (a, b), изображающей z = a+bi, называется аргумен- том комплексного числа z и обозначается arg(z). Отметим, что аргумент 0 не определен. Пусть поэтому |z| 6= 0. В этом случае ϕ = arg(z) — это такой угол, что cos(ϕ) = re(z)/ |z|, sin(ϕ) = im(z)/ |z|. Эти равенства определяют угол ϕ неоднозначно, лишь с точностью до цело- го кратного 2π. Среди всех ϕ удовлетворяющих этим равенствам найдется единственное в промежутке [0, 2π). Традиционно это значение ϕ называет- ся главным значением аргумента и обозначается Arg(z). В системе имплементированы функции, вычисляющие по комплексному числу его модулю и аргумент. Стоит, однако иметь в виде, что возвращае- мый функцией Arg результат находится между π и −π. Abs[z] |z| модуль x Arg[z] arg(z) аргумент z 2.1. Скажите - без помощи компьютера! - чему равен аргумент 0? А потом проверьте. Ответ. Правильно, Interval[ {-Pi,Pi}]. 2.2. Напишите команду, возвращающую главное значение аргумента в про- межутке [0, 2π). Решение. Ну, хотя бы, так: 104 If you stick your fingers in the mains, it's not the imaginary component which you will feel.— Cambridge Mathematical Quotes 312 arg[x ]:=If[Arg[x]>=0,Arg[x],Arg[x]+2*Pi] если, конечно, Вы не боитесь сообщения Possible spelling error. Если r = |z| — модуль комплексного числа z, а ϕ = arg(z) — его аргу- мент, то z можно записать в виде: z = a + bi = r · cos(ϕ) + ir · sin(ϕ) = r(cos(ϕ) + i sin(ϕ)), называемом тригонометрической формой z. Тригонометрическая фор- ма идеально согласована с умножением комплексных чисел, а именно, при умножении комплексных чисел их модули перемножаются, а аргументы складываются, |zw| = |z||w|, arg(zw) = arg(z)+arg(w). Таким образом, для z = r(cos(ϕ) + i sin(ϕ)), w = s(cos(ψ) + i sin(ψ)), имеем zw = r(cos(ϕ) + i sin(ϕ)) · s(cos(ψ) + i sin(ψ)) = rs(cos(ϕ + ψ) + i sin(ϕ + ψ)), Эта формула, известная под названием формулы де Муавра, являет- ся одной из самых полезных формул в математике и, вместе с теоремой Пифагора, содержит всю школьную тригонометрию. Особенно часто ис- пользуется такое ее следствие z n = r n (cos(nϕ) + i sin(nϕ)). 2.3. Докажите формулу де Муавра. Решение. Ну, конечно, просто Simplify[(Cos[x]+I*Sin[x])*(Cos[y]+I*Sin[y])] 2.4. Докажите, что 1 + i tg(ϕ) 1 − i tg(ϕ) n = 1 + i tg(nϕ) 1 − i tg(nϕ) . Формула же для сложения комплексных чисел в тригонометрической форме чуть сложнее и известна специалистам по оптике и электричеству под народным названием “суперпозиция синхронных скалярных гармони- ческих колебаний”. 2.5. Найдите формулу для суммы z = z 1 + z 2 двух комплексных чисел z 1 = r 1 (cos(ϕ 1 ) + i sin(ϕ 1 )), z 2 = r 2 (cos(ϕ 2 ) + i sin(ϕ 2 )) в тригонометрической форме. Ответ. Модуль r и аргумент ϕ числа z определяются формулами: r 2 = r 2 1 + r 2 2 + 2r 1 r 2 cos(ϕ 2 − ϕ 1 ), 313 tg(ϕ) = r 1 sin(ϕ 1 ) + r 2 sin(ϕ 2 ) r 1 cos(ϕ 1 ) + r 2 cos(ϕ 2 ) . 2.6. Обобщите результат предыдущей задачи на любое количество слага- емых. 3. Корни из 1. 105 Важнейшую роль в строении комплексных чисел играют корни из 1. Напомним, что корнем n-й степени из 1 называется решение уравнения x n = 1. В тригонометрической форме корни n-й степени из 1 выражаются как ε k = cos 2πk n + i sin 2πk n , k = 0, . . . , n − 1. Обычно множество всех корней степени n из 1 обозначается µ n и называется группой корней из 1 степени n. 3.1. Напишите команду, которая возвращает список корней из 1 степени n в порядке возрастания аргумента. Решение. Чтобы можно было реально показать возникающие ответы, проиллюстрируем это на примере n = 7. Наивная попытка написать Solve[x^7==1,x] возвращает следующий ответ: {{x->1},{x->-(-1)^1/7},{x->(-1)^2/7},{x->-(-1)^3/7}, {x->(-1)^4/7},{x->(-1)^5/7},{x->(-1)^6/7}} Иными словами, команда Solve возвращает не корни, а правила замены! Ну, с этим справиться легко, нужно просто применить эти правила к x, например, так: ReplaceAll[x,Solve[x^7==1,x]] Теперь вычисление дает нам список корней: {1,-(-1)^1/7},(-1)^2/7,-(-1)^3/7,(-1)^4/7,(-1)^5/7,(-1)^6/7} Однако, эти корни по-прежнему не вычислены! Попробуем выделить в них вещественную и мнимую часть: ComplexExpand[ReplaceAll[x,Solve[x^7==1,x]]] Получающийся при этом ответ уже больше похож на то, что хотелось: {1,-Cos[Pi/7]-I*Sin[Pi/7],Cos[3*Pi/14]+I*Sin[3*Pi/14], -Cos[Pi/14]-I*Sin[Pi/14],Cos[Pi/14]-I*Sin[Pi/14], -Cos[3*Pi/14]+I*Sin[3*Pi/14],-Cos[Pi/7]+I*Sin[Pi/7] } Однако при этом используется описанный в пункте 1 внутренний порядок на комплексных числах, в то время как гораздо естественнее упорядочивать 105 В одном отношении формула для cos(2π/17) не оставляет сомнения. Прийти к ней в рамках традиционных геометрических идей времени Эвклида невозможно. c Семен Григорьевич Гиндикин — С.Г.Гиндикин, Рассказы о физиках и математиках. — Наука, М., 1981, с.1–191. 314 корни из 1 по возрастанию аргумента. Это можно попытаться сделать в терминах определенной в предыдущем пункте функции arg: Sort[ComplexExpand[ReplaceAll[x,Solve[x^7==1,x]]], arg[#1] 3.2. Найдите сумму корней степени n ≥ 2 из 1. Ответ. Вычислив эту сумму для нескольких первых случаев, мы видим, что она равна 0. Как только ответ сформулирован, он становится очевид- ным, так как корни из 1 являются корнями многочлена x n − 1, а формула Виета утверждает, что сумма корней этого многочлена равна коэффициен- ту при x n −1 3.3. Найдите сумму попарных произведений корней степени n ≥ 3 из 1. Корень из единицы ε называется первообразным или, как теперь при- нято говорить, примитивным корнем степени n, если он не является кор- нем никакой меньшей, чем n степени. Если ε — первообразный корень из 1 степени n, то ε k 6= 1 для всех k = 1, . . . , n − 1 и поэтому ε k 6= ε l для всех 0 ≤ k 6= l ≤ n − 1. Таким образом, все числа ε k = 1, ε, ε 2 , . . . , ε n −1 попарно различны. Это значит, что любой первообразный корень степени n порождает группу µ n . Корни же степени n, не являющиеся первообраз- ными содержатся в какой-то строго меньшей подгруппе µ m . Корень ε k в том и только том случае является первообразным корнем степени n, когда gcd(k, n) = 1. 3.4. Напишите команду, которая возвращает список первообразных корней из 1 степени n в порядке возрастания аргумента. Решение двух следующих задач предполагает знакомство с арифмети- ческими функциями ϕ и µ - так обозначаются функция Эйлера и функция Мёбиуса. 106 3.5. Найдите сумму первообразных корней степени n ≥ 2 из 1. Ответ. Эта сумма равна значению функции Мебиуса µ(n). 3.6. Найдите сумму m-х степеней первообразных корней степени n ≥ 2 из 1. Ответ. Положим d = gcd(m, n). Тогда X ε m = ϕ(n) ϕ(n/d) µ(n/d), Перейдем теперь к явному вычислению первообразных корней неболь- ших степеней. При этом мы получим несколько формул для значений ос- новных тригонометрических функций, которые почему-то не предлагают заучивать в школьном курсе тригонометрии. 106 Описания и примеры использования этих функций можно найти в разделе Help системы Mathematica 315 3.7. Явно найдите все (первообразные) корни из 1 небольших степеней, скажем, n ≤ 30. В каких случаях эти корни можно найти решая квадрат- ные уравнения? Решение. Прежде всего, чтобы превратить cos(2π/n) и sin(2π/n) в комби- нацию радикалов или что-то в таком духе, нужно применить FunctionEx- pand. Однако, получающийся при этом ответ совершенно неудобочитаем, поэтому обычно поверх FunctionExpand мы применяем Simplify. Следу- ет быть чрезвычайно осторожным с применением FullSimplify, так как упрощение чего-нибудь совсем невинного — как cos(π/7) или cos(π/13) — может потребовать времени и либо приводит к столь же нечитаемому от- вету, либо возвращает исходное выражение. Вот те степени, для которых такое вычисление дает явные формулы, использующие только квадратные радикалы: 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 16, 17, 20, 24, 30. Так как все эти степени являются делителями последних пяти из них, то достаточно привести ответ для 16, 17, 20, 24, 30. Вот корни степени 16: 1 p 2 + √ 2 + i p 2 − √ 2 2 1 + i √ 2 p 2 − √ 2 + i p 2 + √ 2 2 i − p 2 − √ 2 + i p 2 + √ 2 2 −1 + i √ 2 − p 2 + √ 2 + i p 2 − √ 2 2 −1 − p 2 + √ 2 − i p 2 − √ 2 2 −1 − i √ 2 − p 2 − √ 2 − i p 2 + √ 2 2 −i p 2 − √ 2 − i p 2 + √ 2 2 1 − i √ 2 p 2 + √ 2 − i p 2 − √ 2 2 Чтобы получить корни степени 8, нужно взять каждый второй из них, на- чиная, естественно, с 1, которая является нулевым, а не первым по порядку корнем! Вот корни степени 20: 1 p 10 + 2 √ 5 + i( −1 + √ 5) 4 1 + √ 5 + i p 10 − 2 √ 5 4 p 10 − 2 √ 5 + i(1 + √ 5) 4 −1 + √ 5 + i p 10 + 2 √ 5 4 i 1 − √ 5 + i p 10 + 2 √ 5 4 − p 10 + 2 √ 5 + i(1 + √ 5) 4 −1 − √ 5 + i p 10 + 2 √ 5 4 − p 10 + 2 √ 5 + i( −1 + √ 5) 4 316 −1 − p 10 + 2 √ 5 + i(1 − √ 5) 4 −1 + √ 5 − i p 10 + 2 √ 5 4 − p 10 + 2 √ 5 + i( −1 − √ 5) 4 −1 + √ 5 − i p 10 + 2 √ 5 4 −i −1 + √ 5 − i p 10 + 2 √ 5 4 p 10 + 2 √ 5 + i( −1 − √ 5) 4 1 + √ 5 − i p 10 + 2 √ 5 4 p 10 + 2 √ 5 + i(1 − √ 5) 4 Чтобы получить корни степени 10 или 5, нужно просто взять каждый вто- рой или, соответственно, каждый четвертый из них, снова, естественно, начиная с 1. Вот, наконец, корни степени 24: 1 1 + √ 3 + i( −1 + √ 3) 2 √ 2 √ 3 + i 2 1 + i √ 2 1 + i √ 3 2 −1 + √ 3 + i(1 + √ 3) 2 √ 2 i 1 − √ 3 + i(1 + √ 3) 2 √ 2 −1 + i √ 3 2 −1 + i √ 2 − √ 3 + i 2 −1 − √ 3 + i( −1 + √ 3) 2 √ 2 −1 −1 − √ 3 + i(1 − √ 3) 2 √ 2 − √ 3 − i 2 −1 − i √ 2 −1 − i √ 3 2 1 − √ 3 + i( −1 − √ 3) 2 √ 2 −i −1 + √ 3 + i( −1 − √ 3) 2 √ 2 +1 − i √ 3 2 1 − i √ 2 √ 3 − i 2 1 + √ 3 + i(1 − √ 3) 2 √ 2 Чтобы получить корни степени 12, 6 или 3 нужно просто взять каждый второй, соответственно, каждый четвертый или каждый восьмой из них. Мы не будем приводить ответы для n = 17 и n = 30 ввиду их громозд- кости. Однако, для ценителей конкретности приведем явную формулу, по- лученную с использованием ранних версий Mathematica: cos 2π 17 = 1 16 √ 17 − 1 + q 34 − 2 √ 17+ 2 r 17 + 3 √ 17 − q 170 + 38 √ 17 , 317 Заметим, что это не очень сложное вычисление было проведено семнадца- тилетним Гауссом при построении правильного 17-угольника! Отсюда уже совсем легко вывести, что cos π 17 = 1 16 r 15 + √ 17 + q 34 − 2 √ 17 + v u u t2 34 + 6 √ 17 + q 578 − 34 √ 17 − q 34 − √ 17 − 8 r 2 17 + √ 17 ! , детали приведены в цитированной книге С.Г.Гиндикина. Оставляем заин- тересованному читателю возможность убедиться в справедливости приве- денных формул с использованием современной Mathematica. 3.8. В каких случаях первообразные корни из 1 степеней n ≤ 30 можно найти решая кубические уравнения? Ответ. Кроме степеней, приведенных в ответе к предыдущей задаче, это степени 7, 9, 13, 18, 19, 27. Однако, мы воздержимся от того, чтобы приво- дить явные формулы, ввиду их громоздкости. If you don't care where you are, then you ain't lost. 318 § 5. Простые числа Die Mathematik ist die K¨ onigin der Wissenschaften, und die Zahlen- theorie ist die K¨ onigin der Mathematik 107 Карл Фридрих Гаусс Mathematician: 3 is a prime, 5 is a prime, 7 is a prime, Physicist: 3 is a prime, 5 is a prime, 7 is a prime, 9 is an experimental error, 11 is a prime,... Engineer: 3 is a prime, 5 is a prime, 7 is a prime, 9 is a prime, 11 is a prime,... Programmer: 3 is a prime, 5 is a prime, 7 is a prime, 7 is a prime, 7 is a prime,... Salesperson: 3 is a prime, 5 is a prime, 7 is a prime, 9 – we'll do for you the best we can,... Computer Software Salesperson: 3 is a prime, 5 is a prime, 7 is a prime, 9 will be prime in the next release,... Biologist: 3 is a prime, 5 is a prime, 7 is a prime, 9 – results have not arrived yet,... Advertiser: 3 is a prime, 5 is a prime, 7 is a prime, 11 is a prime,... Lawyer: 3 is a prime, 5 is a prime, 7 is a prime, 9 — there is not enough evidence to prove that it is not a prime,... Accountant: 3 is a prime, 5 is a prime, 7 is a prime, 9 is a prime, deducing 10% tax and 5% other obligations. Statistician: Let's try several randomly chosen numbers: 17 is a prime, 23 is a prime, 11 is a prime... Professor: 3 is a prime, 5 is a prime, 7 is a prime, and the rest are left as an exercise for the student. Computational linguist: 3 is an odd prime, 5 is an odd prime, 7 is an odd prime, 9 is a very odd prime,... Psychologist: 3 is a prime, 5 is a prime, 7 is a prime, 9 is a prime but tries to suppress it,... Pure mathematics, on the other hand, seems to me a rock on which all idealism founders: 317 is a prime, not because we think so, or because our minds are shaped in one way rather than another, but because it is so, because mathematical reality is built that way. Godfrey Harold Hardy 108 Содержание этого параграфа основано на книге Рибенбойма (имеются также слегка переработанный португальский текст и более короткая по- 107 Математика королева наук, а теория чисел королева математики. 108 Обычно мы не приводим переводов с английского. В данном случае такой перевод необходим. “С другой стороны, чистая математика представляется мне скалой, о которую разбивается всякий идеализм : число 317 простое не потому, что нам так кажется, и не потому, что так а не иначе создан наш разум, а потому, что это так , потому что так устроена математическая реальность.” — Г.Г.Харди, Апология математика. — RCD, Ижевск, 2000, с.1–102. Интересно, что в русском переводе смысл фразы заменен на прямо противоположный: “скалой, на которой зиждется всякий идеализм”. Мало того, что переводчик не отличает founders от is founded, он к тому же не понимает смысл и пафос всего окружающего текста! 319 пулярная версия этой книги 109,110 , а также цитированный в предисловии сокращенный русский перевод предварительного варианта книги). Многие исторические детали взяты из книг Наркевича и Серпиньского, а вычис- лительные аспекты всех рассматриваемых здесь проблем в общих чертах обсуждаются в книгах Ризеля и Крандалла—Померанса. Однако, конкрет- ные детали меняются так быстро, что за ними можно следить только по интернет-сайтам. 1. Простые числа. 111 Натуральное число p 6= 1 называется простым, если у него нет соб- ственных делителей, т.е. делителей, отличных от самого p и 1. В системе Mathematica имеется несколько важных и удобных функций для работы с простыми числами. Prime[n] n-е простое число PrimePi[n] количество простых ≤ n PrimeQ[n] тест простоты n ProvablePrimeQ[n] детерминистический тест простоты n Primes домен простых чисел Использование этих функций ясно само по себе. Стоит, однако, подчерк- нуть, что имплементация теста PrimesQ в системе вероятностная. Извест- но, что этот тест дает достоверный ответ для всех простых ≤ 10 16 — и, тем самым во всех рассматриваемых в настоящей главе примеров! Для получения достоверного, а не просто в высшей степени правдоподобного ответа в общем случае необходимо использовать функцию ProvablePrimeQ из пакета NumberTheory`PrimeQ`. 1.1. Породите список первых n простых. Ответ. Проще всего так: Table[Prime[i], {i,1,n}]. Конечно, для фак- тического вывода такого списка нужно подставить вместо n конкретное значение. 1.2. Определите номер простого числа p. 1.3. Породите список всех простых, не превосходящих n. Ответ. Можно, например, так: Table[Prime[i], {i,1,PrimePi[n]}]. 1.4. Найдите наибольшее простое строго меньшее, чем n. Ответ. Например, так: Prime[PrimePi[n-1]]. 1.5. Найдите m наибольших простых строго меньших, чем n. Решение. Можно, конечно, взять m последних элементов из списка всех простых, меньших, чем n, но это плохая идея. Конечно, скорость работы 109 P.Ribenboim, N´ umeros primos: mist´ erios e records. Ass. Inst. Nac. Math. Pura e Appl. Rio de Janeiro, 2001. 110 P.Ribenboim, The little book of big primes, Springer, N.Y. et al, 1991. 111 Enter any 11-digit prime number to continue... 320 следующей программы тоже уменьшается с ростом n, но совсем не так быстро. prevprimes[n ,m ]:= Sort[NestList[Prime[PrimePi[#-1]]&,Prime[PrimePi[n-1]],m-1]] Для чисел порядка 10 9 команда prevprimes для небольших значений m работает сотые доли секунды, в то время как порождение всего списка простых меньших m требует нескольких минут. 1.6. Найдите наименьшее простое строго большее, чем n. Решение. Вот простая процедурная программа из уже упоминавшейся в данном модуле книги Стена Вагона 112 , решающая эту задачу: PrimeAfter[1]:=2 PrimeAfter[n ]:=Module[ {p=n+1+Mod[n,2]}, While[Not[PrimeQ[p]],p+=2];p] Поскольку сами мы редко организуем циклы, поясним, что именно здесь происходит. Так как первая строка в комментарии не нуждается, объяс- ним вторую. Команда Module используется для локализации переменной p, которой придается первое нечетное значение большее n. После этого проверяется, будет ли это p простым и, если нет, его значение инкременти- руется на два (p+=2 это просто программистское сокращение для p=p+2), пока получившееся p не станет простым. После чего возвращается полу- чившееся значение p. 1.7. Найдите первые четыре простых числа вида 1 . . . 1. Предостережение. У начинающего возникнет искушение задать число, состоящее из n единиц, посредством ones[n ]:=Sum[10^i, {i,0,n-1}] Следует, однако, иметь в виду, что это один из многочисленных случаев, когда гораздо естественнее воспользоваться внутренними командами рабо- ты со списками, в данном случае списком цифр ones[n ]:=FromDigits[Table[1, {n}] Конечно, для совсем небольших чисел, имеющих лишь несколько сотен разрядов, разница во времени работы этих конструкций малозаметна. Од- нако, с ростом n время выполнения первой конструкции растет как n 3 , а второй как 2n. Поэтому для чисел с несколькими тысячами разрядов кон- струкции, использующие списки, работают в сотни раз быстрее, чем явные арифметические вычисления. С другой стороны, для чисел с сотнями мил- лионов разрядов реальным ограничением второй констукции становится используемая память. Поэтому если Вы хотите работать с по-настоящему большими числами, правильнее всего задать число, состоящее из n еди- ниц, как (10^n-1)/9. К сожалению, раскладывать числа такого порядка на множители мы все равно не умеем. 112 S.Wagon. Mathematica in Action — Springer-Verlag, 1999. |