任意数内质数与其之和 shell

质数:(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 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<$i; j++ ));do #这里使用了双圆括号
{
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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值