如何在shell脚本中使用for循环打印素数

如何在shell脚本中使用for循环打印素数,shell,for-loop,Shell,For Loop,我想在shell脚本中使用for循环打印素数。请提供一些建议 实际上,我可以打印1到100之间的奇数,但现在我无法打印素数。提供一些脚本来打印素数 # cat prime.sh #!/bin/bash for ((i=1; i<=100; i++)) do output=$(( $i % 2)) if [ $output -ne 0 ] then echo "We got odd numbers: $i" fi done

我想在shell脚本中使用for循环打印素数。请提供一些建议

实际上,我可以打印1到100之间的奇数,但现在我无法打印素数。提供一些脚本来打印素数

# cat prime.sh
#!/bin/bash
for ((i=1; i<=100; i++))

do

      output=$(( $i % 2))

      if [ $output -ne 0 ]

      then
      echo "We got odd numbers: $i"
      fi
done
#cat prime.sh
#!/bin/bash

对于((i=1;i),下面的代码返回指定范围内的素数列表

下面的命令返回10到30之间的素数

/filename.sh 10 30

#!/bin/bash
# Check if a number is prime

# function to return whether prime or not
check_prime() {
    current_number=$1
    flag=0
    i=2

    while test $i -le `expr $current_number / 2`
    do
        if test `expr $current_number % $i` -eq 0
        then
            flag=1
        fi
        i=`expr $i + 1`
    done

    if test $flag -eq 0
        then echo $current_number
    fi
}

# Assign From and to number
from_number=$1
to_number=$2

for (( number=$from_number; number<=$to_number; number++ ))
do
    check_prime $number
done
!/bin/bash
#检查一个数字是否为素数
#函数返回是否为素数
检查素数(){
当前_编号=$1
标志=0
i=2
而测试$i-le`expr$当前\u编号/2`
做
如果测试'expr$当前\u编号%$i`-等式0
然后
标志=1
fi
i=`expr$i+1`
完成
如果测试$flag-等式0
然后回显$current\u编号
fi
}
#从和分配到数字
from_number=$1
收件人号码=$2

对于((number=$from_number;numbery)您需要做一些关于寻找生成素数的算法的研究(例如,Eratosthenes的筛选),然后尝试在shell中实现它。到目前为止,您在素数方面尝试了哪些内容?如果社区能够提供代码片段,这将更容易实现。此外,您使用%2条件检查奇数的方式,只需将其替换为素数条件即可numbers@glenn杰克曼:我是新来壳牌的,所以问一些人我不想帮忙,否则我会调查的。谢谢你的建议。你只要把它们打印出来就行了
echo 1 3 5 7 11 13 17