这是我要完成的工作:
编写一个Bash shell脚本factor.sh,它将执行以下操作:1)提示用户输入10到100之间的整数n; 2)找到该数字的最小(素数)因数,因此,如果数字为21,则将输出消息“最小因数为3”。如果数字为77,则将输出“最小因子为7”。 3)如果该数字除自身外没有其他因素,则应输出“此数字为质数”。
这是我到目前为止的代码,但是我一直遇到错误。
echo "Enter a number from 10 to 100: "
read num
if (($num >= 10 && $num <= 100 ));
then
for ((i = 2; i <= $num; i++));do
if (($num % $i == 0));
then
prime = $i
break
fi
done
if (($prime == $num));
then
echo "This number is prime."
else
echo "The smallest prime fatcor is: "
echo $prime
fi
fi
我得到的错误是prime = $i
的“第16行:=:找不到命令”
“第20行:((:== 77:语法错误:预期的操作数(错误令牌为“ == 77”)“,其中77是我输入的数字,位于第if (($prime == $num));
行>
我不确定我在做什么错。任何帮助将不胜感激。
答案 0 :(得分:2)
请检查以下已删除错误的脚本。
更正:删除空格prime=$i
echo "Enter a number from 10 to 100: "
read num
if (($num >= 10 && $num <= 100 ));
then
for ((i = 2; i <= $num; i++));do
if (($num % $i == 0));
then
prime=$i
break
fi
done
if (($prime == $num));
then
echo "This number is prime."
else
echo "The smallest prime fatcor is: "
echo $prime
fi
fi
答案 1 :(得分:0)
大概这是一次encapsulation: ViewEncapsulation.None.
编程练习,但是如果没有,并且the factor
util可用,那么它很简单:
bash
输出:
spf() { factor "$@" |
while IFS=" :" read n f g ; do
[ "$f" = "$n" ] && \
echo "$f is prime." || \
echo "The smallest factor of $n is $f." ;
done ; }
spf 53 534
由于53 is prime.
The smallest factor of 534 is 2.
接受来自 STDIN 的输入,所以用factor
传递数字列表也是有效的,例如 :
spf