如何在Unix中获取给定数字的因子?

时间:2015-04-09 12:36:13

标签: linux bash shell unix functional-programming

在得到数字的因素时,我有这个问题。我的代码给了我一个数字的所有因子的总数。我想要的是它应该只显示该数字的因子,而不是总数。例如,我输入9输出应该是1,3和9。

我的代码

echo -n " enter a no. "
read n
i=1
mul=1
until [ $i -gt $n ]
do
mul=`expr $mul \* $i `
i=`expr $i + 1 `
done 
echo " factorial of $n is $mul "

1 个答案:

答案 0 :(得分:2)

假设用户以最简单的形式输入数字,例如9而不是09.0,这有效:

echo -n " enter a no. "
read n
for i in $(seq 1 $n)
do
 [ $(expr $n / $i \* $i) == $n ] && echo $i
done

虽然对于大数字来说有点慢。