summaryrefslogtreecommitdiff
path: root/factor.sh
diff options
context:
space:
mode:
Diffstat (limited to 'factor.sh')
-rw-r--r--factor.sh31
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