summaryrefslogtreecommitdiff
path: root/factor.sh
blob: c97bbe6f749e1494486223d1a8a9222d9eba7a5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
factor() {
	n=$1
	f=2
	i=1

	printf '%d:' $n

	while [ $n -gt $f ]; do
		if [ $((n % f)) -eq 0 ]; then
			printf ' %d' $f
			n=$((n / f))
		else
			f=$((f + i))
			i=2
		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