В теории чисел n - гладкое (или n -рыхлое ) число — это целое число , все простые делители которого меньше или равны n . [1] [2] Например, 7-гладкое число — это число, каждый простой делитель которого не превышает 7, поэтому 49 = 7 2 и 15750 = 2 × 3 2 × 5 3 × 7 оба являются 7-гладкими, а 11 и 702 = 2 × 3 3 × 13 не являются 7-гладкими. Этот термин, кажется, был придуман Леонардом Адлеманом . [3] Гладкие числа особенно важны в криптографии , которая основана на факторизации целых чисел. 2-гладкие числа — это просто степени 2 , а 5-гладкие числа известны как обычные числа .
Положительное целое число называется B - гладким , если ни один из его простых множителей не превышает B. Например, число 1620 имеет простую факторизацию 2 2 × 3 4 × 5; следовательно, 1620 является 5-гладким, поскольку ни один из его простых множителей не превышает 5. Это определение включает числа, в которых отсутствуют некоторые меньшие простые множители; например, и 10, и 12 являются 5-гладкими, хотя в них отсутствуют простые множители 3 и 5 соответственно. Все 5-гладкие числа имеют вид 2 a × 3 b × 5 c , где a , b и c — неотрицательные целые числа.
3-гладкие числа также называют «гармоническими числами», хотя это название имеет и другие, более широко используемые значения. [4] 5-гладкие числа также называются регулярными числами или числами Хэмминга; [5] 7-гладкие числа также называют скромными числами , [6] и иногда называют весьма составными числами , [7] хотя это противоречит другому значению весьма составных чисел .
Здесь обратите внимание, что само B не обязательно должно присутствовать среди сомножителей B -гладкого числа. Если наибольший простой делитель числа равен p , то это число является B -гладким для любого B ≥ p . Во многих сценариях B является простым числом , но допускаются и составные числа . Число является B -гладким тогда и только тогда, когда оно p -гладко, где p — наибольшее простое число, меньшее или равное B.
Важным практическим применением гладких чисел являются алгоритмы быстрого преобразования Фурье (БПФ) (такие как алгоритм БПФ Кули-Тьюки ), который работает путем рекурсивного разбиения проблемы заданного размера n на проблемы размером с ее факторы. Используя B -гладкие числа, можно гарантировать, что базовыми случаями этой рекурсии являются небольшие простые числа, для которых существуют эффективные алгоритмы. (Для больших простых чисел требуются менее эффективные алгоритмы, такие как алгоритм Блюстейна БПФ .)
5-гладкие или правильные числа играют особую роль в вавилонской математике . [8] Они также важны в теории музыки (см. Предел (музыка) ), [9] и проблема эффективной генерации этих чисел использовалась в качестве тестовой задачи функционального программирования . [10]
Гладкие числа имеют ряд приложений в криптографии. [11] Хотя большинство приложений сосредоточено на криптоанализе (например, самые быстрые из известных алгоритмов факторизации целых чисел , например: Алгоритм сита общего числового поля ), хеш-функция VSH является еще одним примером конструктивного использования гладкости для получения доказуемо безопасного проекта .
Обозначим через y количество целых y -гладких чисел, меньших или равных x (функция де Брюйна).
Если граница гладкости B фиксирована и мала, существует хорошая оценка для :
где обозначает количество простых чисел, меньших или равных .
В противном случае определите параметр u как u = log x /log y : то есть x = y u . Затем,
где функция Дикмана .
Средний размер гладкой части числа заданного размера известен как , и известно, что он затухает гораздо медленнее, чем . [12]
Для любого k почти все натуральные числа не будут k -гладкими.
Далее, m называется n - степененным гладким (или n - ультрахрупким ), если все простые степени , делящие m, удовлетворяют:
Например, 720 (2 4 × 3 2 × 5 1 ) является 5-гладким, но не 5-степенным (потому что существует несколько степеней простых чисел, превышающих 5, например и ). Оно является гладким в 16 степенях, поскольку его наибольшая степень простого множителя равна 2 4 = 16. Это число также является гладким в 17 степенях, гладким в 18 степенях и т. Д.
В отличие от n -гладких чисел, для любого положительного целого числа n существует только конечное число n -степенных гладких чисел. Фактически, n -степенные гладкие числа являются в точности положительными делителями «наименьшего общего кратного 1, 2, 3, …, n» . (последовательность A003418 в OEIS ), например, 9-степенные гладкие числа (также 10-степенные гладкие числа) являются в точности положительными делителями 2520.
n -гладкие и n -степенные гладкие числа имеют приложения в теории чисел, например, в алгоритме Полларда p - 1 и ECM . Часто говорят, что такие приложения работают с «гладкими числами», без указания n ; это означает, что задействованные числа должны быть n -степени гладкими для некоторого неопределенного малого числа n. По мере увеличения s n производительность рассматриваемого алгоритма или метода быстро ухудшается. Например, алгоритм Полига-Хеллмана для вычисления дискретных логарифмов имеет время работы O ( n 1/2 ) — для групп n - гладкого порядка .
Более того, m называется гладким на множестве A , если существует факторизация m , где факторами являются степени элементов из A . Например, поскольку 12 = 4 × 3, 12 является гладким на множествах A 1 = {4, 3}, A 2 = {2, 3} и , однако оно не будет гладким на множестве A 3 = {3 , 5}, так как 12 содержит множитель 4 = 2 2 , и ни 4, ни 2 не входят в A 3 .
Обратите внимание, что набор A не обязательно должен быть набором простых множителей, но обычно это правильное подмножество простых чисел, как видно из факторной базы метода факторизации Диксона и квадратичного сита . Точно так же это то, что обычное решето числового поля использует для построения своего понятия гладкости при гомоморфизме . [13]
В Интернет-энциклопедии целочисленных последовательностей (OEIS) перечислены B -гладкие числа для маленьких B :