Есть ли практическое применение для команды фактора GNU?


17

Просматривая GNU Coreutils , я заметил factorкоманду, которую я никогда раньше не замечал.

Читая справочную страницу:

Выведите простые множители каждого указанного целого числа NUMBER. Если ничего не указано в командной строке, прочитайте их из стандартного ввода.

Есть ли практическое применение factorили это просто демонстрационная / игрушечная упаковка?

Ответы:


17

Википедия "Фактор (Unix)" с интересным дублем:

Фактор впервые появился в 5-м издании Research Unix в 1974 году как утилита, «поддерживаемая пользователем» (раздел 6 руководства). В седьмом издании в 1979 году оно было перенесено в основной раздел «Команды» руководства (раздел 1). Оттуда, утилита фактора была скопирована во все другие варианты Unix, включая коммерческие Unixes и BSD. В некоторых вариантах Unix он классифицируется как «игра» больше, чем серьезная утилита, и поэтому задокументирован в разделе 6.

Таким образом, может показаться, что некоторым пользователям нравится играть с основными факторами и записывать коэффициент - и, как только он существует, у него, вероятно, нет веских причин не включать его в качестве команды в последующих версиях Unix. Таким образом, «практическое использование» фактора может зависеть от того, что вы считаете практичным - если вы увлекаетесь теорией простых чисел, это, вероятно, отличный инструмент / игра / что угодно.


6

Я знаю, что по крайней мере в одном случае для меня factorбыло полезно проанализировать большой файл данных неизвестного формата.

Если вы подозреваете, что файл имеет записи фиксированной длины, главные факторы длины файла служат отправной точкой для определения фактической длины записи.


4

Он скажет вам, какие простые числа можно умножить вместе, чтобы получить указанное вами число:

например 20 = 2 * 2 * 5

Так,

> factor 20

Вы получаете в 20: 2 2 5качестве выхода

Если число было простым, например, 19, вы получите 19только.


Спасибо, я вроде получил это со страницы руководства. Мне было более любопытно, почему вы захотите сделать это в сценарии оболочки или подобном. Как часто люди действительно нуждаются в простых корнях? Я обновил вопрос, чтобы быть более понятным.
Гэвин Брок


2

Это может быть утилита, созданная в первые дни UNIX, до того, как научные калькуляторы стали дешевыми, небольшими и многочисленными.

Возможно, это позволило разработчикам оригинальной UNIX показать, что все это может сделать что-то полезное и что оно должно продолжать получать финансирование.


1
Он не демонстрирует ни одной из особенностей Unix, поскольку он является чисто вычислительным.
Стефан Шазелас

2
В первые дни Unix, roffнаборщик был разработан для удовлетворения требований финансирования Unix.
Кусалананда

0

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


5
factorограничено числами, которые вписываются в целое число без знака. В лучшем случае это 64 бита (≤ 18,446,744,073,709,551,615), но наименьшее число, которое вы разумно используете, например, RSA, составляет 2048 бит. IOW, это намного больше, чем может выдержать фактор. На самом деле это намного больше, чем запись, во сколько раз превышающая максимальную длину комментария . Это почти 600 цифр в длину (это 2¹⁹⁸⁴, если вы хотите вычислить это самостоятельно, например, bc)
Дероберт

Так что не полезно сегодня, но, может быть, 35 лет назад? Была ли тогда криптография с ключами с такой высокой энтропией? Просто подумал, что это может быть возможной причиной его существования.
Дрейк Кларрис

Нет. Если фактор может влиять на число (без долгих и долгих лет), он бесполезен для криптографии. Кроме того, я держу пари, что фактор использует относительно медленный алгоритм ...
Дероберт

1
Сказал, что я очень мало знаю о криптографии. ха-ха
Дрейк Кларрис

3
@derobert - по крайней мере, версия на моей машине (8.25) использует libgmp и может учитывать очень большие числа: 184467440737095516150000000000001: 19 37 227601536870423 1152893543912729
Виктор Даль,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.