diff options
Diffstat (limited to 'factor.sh')
-rw-r--r-- | factor.sh | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/factor.sh b/factor.sh new file mode 100644 index 0000000..ab6a72e --- /dev/null +++ b/factor.sh @@ -0,0 +1,31 @@ +factor() { + n=$1 + f=2 + + printf '%d:' $n + + while [ $n -gt $f ]; do + if [ $((n % f)) -eq 0 ]; then + printf ' %d' $f + n=$((n / f)) + else + f=$((f + 1)) + fi + done + + if [ $n -gt 1 ]; then + printf ' %d' $n + fi + + printf '\n' +} + +if [ -z "$*" ]; then + while IFS=\n read -r i; do + factor $i + done +else + for i in $*; do + factor $i + done +fi |