linux shellfor循环运算质数,任意数内质数与其之和 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

{

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值