factor

The factor tool is a reasonably clever (although limited for serious cryptographic work by the size of the numbers that it can work on) tool that produces the prime factors of a number. Prime numbers are divisible only by 1 and themselves, so the factors cannot be reduced down any further. This produces some rather surprising results; even a rather large number such as 43,674,876,546 has only five prime factors.

factor 43674876546
43674876546: 2 3 7 1451 716663
$ factor 716663
716663: 716663
$

The script that follows reformats the output of factor to appear rather clever. In its implementation, it is approaching that of a functional, rather than procedural, language. It starts with the pure list of answers (omitting the colon and anything before it), and each time, it multiplies the first two numbers together and passes that result, along with the remaining factors, to the next instance of itself. This is a nice use of recursion to loop through input of unknown length. If the factorize function is called with only one argument, that must be the final $sum, which means that all of the other factors have already been multiplied out. To make more sense of it, uncomment the “Parsing” line to see what it gets passed at each stage.

download.eps
cat factorize.sh #!/bin/bash function factorize {   # echo "Parsing $@"   if [ "$#" -gt "1" ];   then     sum='expr $1 \* $2'     echo "$1 x $2 = $sum" ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.