shell怎么统计质数的个数
答案:2 悬赏:50
解决时间 2021-02-22 19:25
- 提问者网友:白越
- 2021-02-22 13:22
shell怎么统计质数的个数
最佳答案
- 二级知识专家网友:青灯壁纸妹
- 2021-02-22 14:48
#!/bin/bash
function zhishu()
{
echo "输入为:${arr[*]}"
let k=${#arr[*]}
let j=0
for((t=1;t<=$k;t++))
do
var=`echo sqrt\(${arr[$t]}\) | bc`
let y=0
for((f=1;f<=$var;f++))
do
x=`expr ${arr[$t]} % $f`
if [ "$x" = "0" ];then
let y=y+1
fi
done
if [ $y -eq 1 ];then
let j=j+1
newarr[$j]=${arr[$t]}
fi
done
echo "其中,质数有$j个"
echo "分别为${newarr[*]}"
}
function shuzu()
{
for((w=1;w<=$num;w++))
do
echo "请输入第$w个数字"
read -p ':' number
arr[$w]=$number
done
zhishu ${arr[*]}
}
read -p '请指定预统计的数字个数:' num
shuzu $num
function zhishu()
{
echo "输入为:${arr[*]}"
let k=${#arr[*]}
let j=0
for((t=1;t<=$k;t++))
do
var=`echo sqrt\(${arr[$t]}\) | bc`
let y=0
for((f=1;f<=$var;f++))
do
x=`expr ${arr[$t]} % $f`
if [ "$x" = "0" ];then
let y=y+1
fi
done
if [ $y -eq 1 ];then
let j=j+1
newarr[$j]=${arr[$t]}
fi
done
echo "其中,质数有$j个"
echo "分别为${newarr[*]}"
}
function shuzu()
{
for((w=1;w<=$num;w++))
do
echo "请输入第$w个数字"
read -p ':' number
arr[$w]=$number
done
zhishu ${arr[*]}
}
read -p '请指定预统计的数字个数:' num
shuzu $num
全部回答
- 1楼网友:一池湖水
- 2021-02-22 15:32
for ((i>101000;i<102000;i++)) i 没有赋初值,默认是从0开始哦。这里是 i=101000 吧 if [ $i%$a = 0 ] 这句不对,只有在(( ))里才可以直接做算术运算, [ ]只是判断表达式,不可以的。 可以用expr计算,改为 if [ `expr $i % $a` -eq 0 ] 或者用shell内建命令let计算: let mod=i%a if [ $mod -eq 0 ] 另外 if [ $ret == 1 ] 也有问题,判断数值相等,用 -eq ;判断字符串相等,= 即可。 == 是c语言里的用法。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯