Existe um uso prático para o comando fator GNU?

17

Olhando através do GNU Coreutils , vi o factorcomando que nunca havia notado antes.

Lendo a página de manual:

Imprima os fatores primos de cada número inteiro especificado NUMBER. Se nenhum for especificado na linha de comandos, leia-os na entrada padrão.

Existe um uso prático para factor, ou é apenas um pacote de demonstração / brinquedo?

Gavin Brock
fonte

Respostas:

17

Wikipedia, "Factor (Unix)", com uma visão interessante:

O fator apareceu pela primeira vez na 5ª edição do Research Unix em 1974, como um utilitário "mantido pelo usuário" (seção 6 do manual). Na 7ª edição, em 1979, foi movida para a seção principal de "comandos" do manual (seção 1). A partir daí, o utilitário fator foi copiado para todas as outras variantes do Unix, incluindo Unixes comerciais e BSD. Em algumas variantes do Unix, ele é classificado como um "jogo" mais que um utilitário sério e, portanto, documentado na seção 6.

Portanto, parece que alguns usuários gostaram de brincar com fatores primos e escrever fatores - e, uma vez que existiram, provavelmente não havia uma boa razão para não incluí-lo como comando nas versões subsequentes do Unix. Portanto, os "usos práticos" do fator podem depender do que você considera prático - se você gosta da teoria dos números primos, provavelmente é uma ótima ferramenta / jogo / qualquer coisa.

oliver
fonte
6

Eu sei que em pelo menos um caso, para mim, factorfoi útil na análise de um grande arquivo de dados de formato desconhecido.

Se você suspeitar que um arquivo possui registros de tamanho fixo, os fatores principais do comprimento do arquivo fornecem um ponto de partida para determinar o tamanho real do registro.

codelaoma
fonte
4

Ele informará quais números primos podem ser multiplicados para obter o número especificado:

por exemplo 20 = 2 * 2 * 5

Então,

> factor 20

Você obtém 20: 2 2 5como saída

Se o número for primo, por exemplo 19, você receberá 19apenas.

margarida
fonte
Obrigado, eu meio que consegui isso na página de manual. Fiquei mais curioso por que você desejaria fazer isso em um shell script ou similar. Quantas vezes as pessoas realmente precisam de raízes primárias? Atualizei a pergunta para ficar mais clara.
precisa saber é o seguinte
2

Esse pode ser um utilitário descendente dos primeiros dias do UNIX, antes que as calculadoras científicas fossem baratas, pequenas e abundantes.

Pode ter servido para permitir que os desenvolvedores do UNIX original mostrassem que a coisa toda poderia fazer algo útil e que deveria continuar recebendo financiamento.

LawrenceC
fonte
1
Ele não demonstra nenhum dos recursos do Unix, pois é puramente computacional.
Stéphane Chazelas
2
Nos primeiros dias do Unix, o rofftipógrafo foi desenvolvido para satisfazer os requisitos de financiamento do Unix.
Kusalananda
0

Os números primos desempenham um papel importante na criptografia, embora eu saiba muito pouco sobre isso, eu poderia imaginar que eles podem achar útil para identificar números primos grandes e coisas do gênero.

Drake Clarris
fonte
5
factoré limitado a números que se encaixam em um número inteiro não assinado. Na melhor das hipóteses, são 64 bits (≤ 18.446.744.073.709.551.615) - mas o menor número em que você usaria razoavelmente, por exemplo, o RSA é 2048 bits. IOW, é muito maior do que o fator pode suportar. De fato, é muito maior que escrever quantas vezes maior excede a duração máxima de um comentário . Tem quase 600 dígitos (são 2¹⁹⁸⁴ se você quiser calcular com você, por exemplo, bc) #
derobert 10/12/12
Então, não é útil hoje, mas talvez 35 anos atrás? A criptografia estava usando chaves com essa alta entropia? Apenas pensei que poderia ser uma possível razão de existir.
Drake Clarris
Não. Se o fator puder fatorar o número (sem consumir muitos e muitos anos), será inútil para a criptografia. Além disso, eu aposto que o fator usa um algoritmo relativamente lento ...
derobert
1
Disse que sei muito pouco sobre criptografia. haha
Drake Clarris
3
@derobert pelo menos a versão na minha máquina (8.25) usa libgmp e pode levar em conta números muito grandes: #184467440737095516150000000000001: 19 37 227601536870423 1152893543912729
Viktor Dahl #