输出2 到100 内的质数
lan@lan_ubuntu:~/桌面/program/课本$ cat PrintPrime.sh
#!/bin/bash
#输出2-100之间的素数
i=2;
while [ $i -le 100 ] #控制外层循环的次数
do
j=2
flag=1 #falg为1表示i是素数
while [ $j -le `expr $i / 2` ] #当j小于或者等于 i的一般时
do
if [ `expr $i % $j` -eq 0 ] #如果找到一个i的因数j,那i就不是质数了
then flag=0;break; #改标志,退出循环
fi
j=`expr $j + 1`
done
if [ $flag -eq 1 ]
then
echo "${i} is a Prime "
fi
i=`expr $i + 1`
done
结果:
lan@lan_ubuntu:~/桌面/program/课本$ ./PrintPrime.sh
2 is a Prime
3 is a Prime
5 is a Prime
7 is a Prime
11 is a Prime
13 is a Prime
17 is a Prime
19 is a Prime
23 is a Prime
29 is a Prime
31 is a Prime
37 is a Prime
41 is a Prime
43 is a Prime
47 is a Prime
53 is a Prime
59 is a Prime
61 is a Prime
67 is a Prime
71 is a Prime
73 is a Prime
79 is a Prime
83 is a Prime
89 is a Prime
97 is a Prime
对上面的代码加上输入,就可以求你小于n的质数了。
lan@lan_ubuntu:~/桌面/program/课本$ cat PrintPrime.sh
#!/bin/bash
#输出小于n的素数
read -p "输入n:" n
i=2;
while [ $i -le $n ]
do
j=2
flag=1 #falg为1表示i是素数
while [ $j -le `expr $i / 2` ]
do
if [ `expr $i % $j` -eq 0 ]
then flag=0;break;
fi
j=`expr $j + 1`
done
if [ $flag -eq 1 ]
then
echo "${i} is a Prime "
fi
i=`expr $i + 1`
done
结果:
lan@lan_ubuntu:~/桌面/program/课本$ ./PrintPrime.sh
输入n:150
2 is a Prime
3 is a Prime
5 is a Prime
7 is a Prime
11 is a Prime
13 is a Prime
17 is a Prime
19 is a Prime
23 is a Prime
29 is a Prime
31 is a Prime
37 is a Prime
41 is a Prime
43 is a Prime
47 is a Prime
53 is a Prime
59 is a Prime
61 is a Prime
67 is a Prime
71 is a Prime
73 is a Prime
79 is a Prime
83 is a Prime
89 is a Prime
97 is a Prime
101 is a Prime
103 is a Prime
107 is a Prime
109 is a Prime
113 is a Prime
127 is a Prime
131 is a Prime
137 is a Prime
139 is a Prime
149 is a Prime