В теории чисел 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 -гладких целых чисел, меньших или равных x (функция де Брейна).
Если граница гладкости B фиксирована и мала, то существует хорошая оценка для :
где обозначает количество простых чисел, меньших или равных .
В противном случае определите параметр u как u = log x / log y : то есть, x = y u . Тогда,
где — функция Дикмана .
Для любого k почти все натуральные числа не будут k -гладкими.
Если , где является -гладким и не является (или равно 1), то называется -гладкой частью . Известно, что относительный размер -гладкой части случайного целого числа, меньшего или равного , убывает гораздо медленнее, чем . [12]
Далее, 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 :