# Is there a practical use for the GNU factor command?

Looking through the GNU Coreutils, I spotted the `factor` command, that I had never noticed before.

Print the prime factors of each specified integer NUMBER. If none are specified on the command line, read them from standard input.

Is there a practical use for `factor`, or is it just a demonstration / toy package?

-

## migrated from serverfault.comSep 5 '12 at 1:59

This question came from our site for system and network administrators.

Wikipedia, "Factor (Unix)" with an interesting take:

factor first appeared on 5th edition Research Unix in 1974, as a "user maintained" utility (section 6 of the manual). In the 7th edition in 1979, it was moved into the main "commands" section of the manual (section 1). From there, the factor utility was copied to all other variants of Unix, including commercial Unixes and BSD. In some variants of Unix, it is classified as a "game" more than a serious utility, and therefore documented in section 6.

So it would seem that some user(s) liked to play around with prime factors and wrote factor - and once it existed, there probably was no good reason not to include it as a command in subsequent Unix versions. So the "practical uses" of factor may depend on what you consider practical - if you are into prime number theory, it is probably a great tool/game/whatever.

-

It will tell you what prime numbers can be multiplied together to get the number you've specified:

e.g `20 = 2 * 2 * 5`

So,

`> factor 20`

You get `20: 2 2 5` as output

If the number was a prime, e.g 19, you will get a `19` only.

-
Thanks, I kind of got this from the man page. I was more curious why you would want to do this in a shell script, or similar. How often do people actually need prime roots? I updated the question to be clearer. – Gavin Brock Sep 5 '12 at 2:24

This may be an utility descended from the early days of UNIX, before scientific calculators were cheap, small, and plentiful.

It may have served to allow the developers of the original UNIX to show that the whole thing could do something useful and that it should keep receiving funding.

-
It demonstrates none of the features of Unix though as it's purely computational. – Stéphane Chazelas Dec 10 '12 at 20:13

Prime numbers play a large role in cryptography, although I know very little about it, I could fathom that they may find it useful for identifying large primes and the like

-
`factor` is limited to numbers that fit into an unsigned integer. Best case, that's 64 bits (≤ 18,446,744,073,709,551,615)—but the smallest number you'd reasonably use in e.g., RSA is 2048 bits. IOW, That's much larger than factor can handle. In fact its so much larger, that writing out how many times larger exceeds the maximum length of a comment. It's almost 600 digits long (it's 2¹⁹⁸⁴ if you want to calculate it yourself with e.g., `bc`) – derobert Dec 10 '12 at 20:06
So not useful today, but maybe 35 years ago? Was cryptography using keys with that high of entropy then? Just thought it might be a possible reason it exists. – Drake Clarris Dec 10 '12 at 21:25
No. If factor can factor the number (without chugging for many, many years on it), then it is useless for cryptography. Also, I bet factor uses a relatively slow algorithm... – derobert Dec 10 '12 at 21:30
Told ya I know very little about cryptography. haha – Drake Clarris Dec 10 '12 at 21:46
@derobert at least the version on my machine (8.25) uses libgmp and can factor very large numbers: `184467440737095516150000000000001: 19 37 227601536870423 1152893543912729 ` – Viktor Dahl Apr 26 at 19:06

Most tools are useful to someone. Here's a question from someone who wants to use `factor` to help divide up a large file into optimally-sized chunks.

Find a "moderately large" divisor of a given number?

-