summaryrefslogtreecommitdiff
path: root/factor
blob: ab6a72ef45e42e66c2e08742eebd503bd26c6852 (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
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