linux shellfor循环运算质数,任意数内质数与其之和 shell | 您所在的位置:网站首页 › shell脚本判断质数 › linux shellfor循环运算质数,任意数内质数与其之和 shell |
质数:(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整数(除0以外)的数称之为素数(质数);否则称为合数。 双圆括号:(( expression )) expression可以是任何的数字赋值表达式或者是数学表达式,如果是变量,在变量前面可以加$符号,也可以不加。双括号命令符号 符号 说明 符号 说明 var++ 后增量 逐位右移 ++var 前增量 & 逐位布尔逻辑与 --var 前减量 | 逐位布尔逻辑或 ! 逻辑否定 && 逻辑与 ~ 逐位取反 || 逻辑或 ** 取幂 双方括号:[[ expression ]]字符串比较提供高级功能,双方括号里面的expression使用在test命令中使用的标准字符串比较,但是它提供了test命令没有的模式匹配功能。 [root@rhel6164 scripts]$ cat test.sh #!/bin/bash #using patern matching if [[ $(ls $(pwd)) == p* ]];then #模式匹配 echo "pattern success" else echo "pattern fail" fi 脚本: [root@rhel6164 scripts]$ cat prime.sh #!/bin/bash function primef #定义函数,这里把输出质数和求质数之和都放到primef函数里面完成 { var=$1_ #防止$1没有赋值,会赋值没有初始化的变量给var var=${var/_/} #去掉多余的下划线( _ ) sum=0 i=1 while [ $i -le $var ];do #这里使用了[,这个命令[为test的bash的内建命令 bool=1 #初始化标志 for (( j=2; $j { if [ $(($i%$j)) -eq 0 ];then #这里也使用了双圆括号求值,在双圆括号里面的操作数可以加上$,也可以不加,后面就没有加上 bool=0 break fi } done if [ $bool -eq 1 ];then echo -n "$i " sum=$((sum+i)) fi #i=$((i+1)) i=$(expr $i + 1) #用expr命令求值,注意两个操作数之间要有空格 done echo echo -n "the sum of prime($var) is $sum" } echo -n "Please input one integer:" read varint primef $varint echo 运行: [root@rhel6164 scripts]$ bash prime.sh Please input one integer:10 1 2 3 5 7 the sum of prime(10) is 18 |
CopyRight 2018-2019 实验室设备网 版权所有 |