Czy istnieje praktyczne zastosowanie polecenia czynnik GNU?

17

Przeglądając GNU Coreutils , zauważyłem factorpolecenie, którego nigdy wcześniej nie zauważyłem.

Czytanie strony podręcznika:

Wydrukuj czynniki pierwsze każdej określonej liczby całkowitej NUMBER. Jeśli nie podano żadnych w wierszu poleceń, przeczytaj je ze standardowego wejścia.

Czy istnieje praktyczne zastosowanie factor, czy może jest to tylko pakiet demonstracyjny / zabawka?

Gavin Brock
źródło

Odpowiedzi:

17

Wikipedia „Factor (Unix)” z ciekawym ujęciem:

czynnik pojawił się po raz pierwszy w piątej edycji Research Unix w 1974 roku, jako narzędzie „utrzymywane przez użytkownika” (sekcja 6 instrukcji). W siódmym wydaniu w 1979 r. Został przeniesiony do głównej sekcji „poleceń” podręcznika (sekcja 1). Stamtąd użyteczność czynnika została skopiowana do wszystkich innych wariantów Uniksa, w tym komercyjnych Uniksów i BSD. W niektórych wariantach Uniksa jest on klasyfikowany jako „gra” bardziej niż poważne narzędzie, dlatego został udokumentowany w sekcji 6.

Wydaje się więc, że niektórzy użytkownicy lubili bawić się pierwszymi czynnikami i napisali czynnik - a kiedy już istniał, prawdopodobnie nie było żadnego dobrego powodu, aby nie włączać go jako polecenia w kolejnych wersjach Uniksa. Tak więc „praktyczne zastosowanie” czynnika może zależeć od tego, co uważasz za praktyczne - jeśli jesteś w teorii liczb pierwszych, jest to prawdopodobnie świetne narzędzie / gra / cokolwiek.

oliver
źródło
6

Wiem, że przynajmniej w jednym przypadku factorbyła dla mnie pomocna w analizie dużego pliku danych o nieznanym formacie.

Jeśli podejrzewasz, że plik ma rekordy o stałej długości, czynniki pierwotne długości pliku stanowią punkt początkowy, od którego można określić rzeczywistą długość rekordu.

codelahoma
źródło
4

Powie ci, jakie liczby pierwsze można pomnożyć, aby uzyskać określoną liczbę:

na przykład 20 = 2 * 2 * 5

Więc,

> factor 20

Otrzymasz 20: 2 2 5jako wynik

Jeśli liczba była liczbą pierwszą, np. 19, dostaniesz 19jedyną.

stokrotka
źródło
Dzięki, w pewnym sensie mam to ze strony podręcznika. Byłem bardziej ciekawy, dlaczego chcesz to zrobić w skrypcie powłoki lub podobnym. Jak często ludzie rzeczywiście potrzebują pierwszorzędnych korzeni? Zaktualizowałem pytanie, aby było jaśniejsze.
Gavin Brock,
2

Może to być narzędzie wywodzące się z początków UNIX-a, zanim kalkulatory naukowe były tanie, małe i obfite.

Mogło to pozwolić twórcom oryginalnego systemu UNIX na wykazanie, że cała rzecz może zrobić coś pożytecznego i że powinna nadal otrzymywać fundusze.

LawrenceC
źródło
1
Nie wykazuje jednak żadnych cech Uniksa, ponieważ jest on czysto obliczeniowy.
Stéphane Chazelas,
2
We wczesnych latach Uniksa roffskładanie tekstu zostało opracowane w celu spełnienia wymagań dotyczących finansowania w systemie Unix.
Kusalananda
0

Liczby pierwsze odgrywają dużą rolę w kryptografii, chociaż wiem o tym bardzo niewiele, mógłbym pojąć, że mogą być przydatne do identyfikowania dużych liczb pierwszych i tym podobnych

Drake Clarris
źródło
5
factorjest ograniczony do liczb pasujących do liczby całkowitej bez znaku. Najlepszy przypadek to 64 bity (≤ 18 446,744,073,709,551,615) - ale najmniejsza liczba, jaką można rozsądnie zastosować np. W RSA to 2048 bitów. IOW, To znacznie więcej niż czynnik może znieść. W rzeczywistości jest o tyle większy, że napisanie, ile razy większy, przekracza maksymalną długość komentarza . Ma prawie 600 cyfr (2 2⁹⁸⁴, jeśli chcesz to obliczyć np. bc)
derobert
Więc dziś nie jest przydatny, ale może 35 lat temu? Czy wówczas kryptografia używała kluczy o tak wysokim poziomie entropii? Pomyślałem, że to może być powód, dla którego istnieje.
Drake Clarris,
Nie. Jeśli czynnik może uwzględniać liczbę (bez pomyłek przez wiele, wiele lat), to jest bezużyteczny w kryptografii. Ponadto
zakładam się
1
Powiedziałem, że niewiele wiem o kryptografii. haha
Drake Clarris,
3
@derobert przynajmniej wersja na moim komputerze (8.25) używa libgmp i może uwzględniać bardzo duże liczby: 184467440737095516150000000000001: 19 37 227601536870423 1152893543912729
Viktor Dahl