任意数内质数与其之和 shell

来源:互联网 发布:我国2016车祸死亡数据 编辑:程序博客网 时间:2024/05/16 08:36

质数:(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整数(除0以外)的数称之为素数(质数);否则称为合数。

双圆括号(( expression )) expression可以是任何的数字赋值表达式或者是数学表达式,如果是变量,在变量前面可以加$符号,也可以不加。双括号命令符号

符号说明符号说明var++后增量<<逐位左移var--后减量>>逐位右移++var前增量&逐位布尔逻辑与--var前减量|逐位布尔逻辑或!逻辑否定&&逻辑与~逐位取反||逻辑或**取幂  

双方括号[[ expression ]]字符串比较提供高级功能,双方括号里面的expression使用在test命令中使用的标准字符串比较,但是它提供了test命令没有的模式匹配功能。

[root@rhel6164 scripts]$ cat test.sh#!/bin/bash#using patern matchingif [[ $(ls $(pwd)) == p* ]];then #模式匹配echo "pattern success"elseecho "pattern fail"fi

脚本

[root@rhel6164 scripts]$ cat prime.sh#!/bin/bashfunction primef #定义函数,这里把输出质数和求质数之和都放到primef函数里面完成{var=$1_ #防止$1没有赋值,会赋值没有初始化的变量给varvar=${var/_/} #去掉多余的下划线( _ )sum=0i=1while [ $i -le $var ];do #这里使用了[,这个命令[为test的bash的内建命令bool=1 #初始化标志for (( j=2; $j<$i; j++ ));do #这里使用了双圆括号{if [ $(($i%$j)) -eq 0 ];then #这里也使用了双圆括号求值,在双圆括号里面的操作数可以加上$,也可以不加,后面就没有加上bool=0breakfi}doneif [ $bool -eq 1 ];thenecho -n "$i "sum=$((sum+i))fi#i=$((i+1))i=$(expr $i + 1) #用expr命令求值,注意两个操作数之间要有空格doneechoecho -n "the sum of prime($var) is $sum"}echo -n "Please input one integer:"read varintprimef $varintecho
运行
[root@rhel6164 scripts]$ bash prime.shPlease input one integer:101 2 3 5 7the sum of prime(10) is 18


0 0
原创粉丝点击