Число делителей τ(n). Числа с заданным числом делителей.
Пример 8.6. Наименьшее число, имеющее 100 делителей.
Предположим, нужно найти наименьшее число, имеющее 100 делителей. Тогда нужно выполнить следующую программу.
m
=
100
;
n
=
1
;
While[DivisorSigma[
0
,n]!
=
m,n
+
+
];
Print[n,
":"
,DivisorSigma[
0
,n]]
Выполнив эту программу, получим результат.
45360
:
100
Честно говоря, здесь было немного риска. Ведь если бы числа с заданным числом делителей не оказалось, программа бы зациклилась. Но фокус в том, что всегда существует число, имеющее любое (натуральное, конечно) наперед заданное количество делителей.
Давайте, например, найдем все натуральные числа, количество делителей которых является произведением двух простых натуральных чисел.
Итак, пусть число делителей равно r s, где r и s – простые числа. Тогда n= рn-1 или n = pr-v > где p и n – произвольные простые числа.
Но, тем не менее, иногда программа, подобная приведенным выше, работает слишком долго. С ее помощью не удастся, например, за приемлемое время найти наименьшее число, имеющее миллион делителей.
Пример 8.7. Наименьшее число, имеющее миллион делителей.
Известный немецкий популяризатор математики Вальтер Литцман в середине XX столетия писал, что согласно математическому бюллетеню Буэнос-Айреса в работе Мерсенна "Cogitaeta physico-matematica", изданной в Париже в 1644 году, было указано, что наименьшее число, имеющее миллион делителей, есть:
n
=
1267650600228229401496703205376
^
668472886094434
Однако Вальтер Литцман заметил, что некоторые усомнились в этом и послали вопрос в Bolletino di Matematica (4-я серия, т. II, с. 28), было ли доказано это утверждение. Опять же, как сообщает Вальтер Литцман, ответ не был получен.
Давайте хотя бы частично проверим утверждение, сделанное в математическом бюллетене Буэнос-Айреса. Конечно, система Mathematica не может нам помочь проверить, действительно ли Мерсенн, а не кто-то другой нашел это число. Точно так же она не может нам помочь проверить, действительно ли в 1644 году, а не в каком-то другом было сделано это сообщение. Но зато система Mathematica может помочь при подсчете делителей этого числа.
nl
=
1267650600228229401496703205376
;
n2
=
n1
^
66
;
n3
=
847288609443
; n4
=
n3
^
4
; n5
=
n2
*
n4;
>
DivisorSigma[
0
,n5]
666701
Как видите, миллионом здесь и не пахнет! Так что сомнения были не напрасными.