shell编程求素数(shell 从1-100取出所有的质数)
本文目录
- shell 从1-100取出所有的质数
- shell脚本编程实现输出素数,在第六行出现问题求解决
- 用shell编程求100到200之间的质数
- 5、shell编程综合设计 编写一个显示菜单的shell程序,利用函数实现简单
- 用shell实现100以内素数求和
- 编写3个shell编程用for,while,until求1…100的素数和
- shell求质数
- 求用shell编一个程序求出1到100以内的素数
- linux 编写程序求出100以内质数
shell 从1-100取出所有的质数
#!/bin/bash
echo 1
echo 2
for i in `seq 3 100`
do
flag=1
for j in `seq 2 $((i-1))`
do
if
then
flag=0
break
fi
done
if
then
echo $i
fi
done
shell不太会,写的比较笨。
shell脚本编程实现输出素数,在第六行出现问题求解决
程序清单如下:
L0.2 prime.sh
#!/bin/bash
#
# SCRIPT: prime.sh
# AUTHOR: Zhaing&Bo
# DATE: 2010-11-21
# REV: 1.1.A
#
# PLATFORM: Linularis
#
# PURPOSE: Read a number from the c***ole, then print all the primes
# in (1~100). And at the same time calculate the sum of all
# the primes.
#
# set -n # Uncomment to check your syntax, without execution.
# # NOTE: Do not forget to put the comment back in or
# # the shell script will not execute!
# set -x # Uncomment to debug this shell script (Bash only)
#
##########################################################
########### DEFINE FILES AND VARIABLES HERE ##############
##########################################################
num=0 # 用来暂存用户输入整数
i=0 # 循环控制变量(控制is_prime函数中的循环次数)
N=0 # 待测值(is_prime函数形参)
n=0 # 主函数循环控制变量(is_prime函数实参)
flag=1 # 素数表示(其中 1 表示是,0 表示否)
sum=0 # 用来存储素数之和
##########################################################
############### DEFINE FUNCTIONS HERE ####################
##########################################################
#/**
# * 函数名称:is_prime()
# * 函数功能:测试一个数是否为素数
# */
function is_prime() {
N=$1
flag=1
for ((i=2; i《(N/2+1); i++)) {
((N%i))
if ; then
flag=0; break;
fi
}
}
##########################################################
################ BEGINNING OF MAIN #######################
##########################################################
# 输出提示
read -p "Please input a postive integer:" num
#echo -e "\nYour Number is: $num.\n" # 将用户输入输出,以便用户确定
echo -e "All the prime from 1 to $num: "
for ((n=2; n《=$num; n++)) {
is_prime n
if ; then
echo -n "$n "
((sum=sum+n))
# echo -e "$n Is prime."
# else
# echo -e "$n is Not prime.\n"
fi
}
# 输出所有素数的和(1~num)
echo -e "\nThe SUM of all the primes is: $sum.\n"
# End of script
您好!脚本如上所示,我只在Fedora13下进行过测试,没有问题;但,别的Linux平台我不敢保证程序能够正常运行。注意,其中汉语注释在Linux下可能显示乱码,本人不再为此提供技术支持。
另外,这也是我写的第一个脚本。程序可能不是最好的,有什么问题请留言。
这类小脚本并不是很难,多查查书,google一下基础概念;自己就能写出来的。
用shell编程求100到200之间的质数
$ cat 1
#!/bin/bash
for i in `seq 100 200`
do
for((j=2;j《=i-1;j++))
do
&& break
done
&& echo $i
done
$ sh 1
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
5、shell编程综合设计 编写一个显示菜单的shell程序,利用函数实现简单
while :
do
echo "===========================================
** (1)计算1到n的奇数之和; **
** (2)计算1到n的阶乘; **
** (3)计算1到n的所有质数; **
** (4)退出程序。 **
=========================================="
read -p "Please enter function select and number:" m n
&&exit
if echo $m|grep "^*$" 》/dev/null
then
break
fi
done
function sumodd()
{
result=0
i=1
while
do
result=$(( result + i ))
i=$(( i + 2 ))
done
printf "sum odd from 1 to $1:%d\n" $result
}
function fact()
{
result=1
i=1
while
do
result=$(( result * i))
i=$((i + 1))
done
printf "factorial from 1 to $1:%d\n" $result
}
function prime()
{
i=2
while
do
j=2
while
do
if
then
break
fi
j=$((j + 1))
done
if
then
printf "%d\t" $i
fi
i=$((i + 1))
done
echo
}
case $m in
1) sumodd $n;;
2) fact $n;;
3) prime $n;;
*) exit $?
esac
用shell实现100以内素数求和
写了个 希望对你有帮助
# more s.shu.sh
sum=0
num=$1
for i in {2..10}
do
#echo $i
flag=0
k=$(expr $i \/ 2)
for (( j=2;j《=$k;j=j+1 ))
do
m=$(expr $i % $j)
if
then
flag=1
break
fi
done
if
then
sum=$(expr $sum + $i)
fi
done
echo $sum
# sh sushu.sh
17
10以内的素数之和是17.你可以根据需要将for i in {2..10} 改为for i in {2..100}
本想以传参的方式求你输入的参数范围内的所有素数之和。但是遇到了一些问题。只好把范围写死。
有时间再改进改进
编写3个shell编程用for,while,until求1…100的素数和
按照你的要求编写的三个Bash程序如下
sum=0
for ((i=1; i《=100; i++))
do
for ((j=2; j《i; j++))
do
if ((i%j==0))
then
break
fi
done
if ((i==j))
then
sum=$
fi
done
echo $sum
源代码
运行结果
i=1
sum=0
until
do
j=2
until
do
if ((i%j==0))
then
break
fi
let j++
done
if ((i==j))
then
sum=$
fi
let i++
done
echo $sum
源代码
运行结果
i=1
sum=0
while
do
j=2
while
do
if ((i%j==0))
then
break
fi
let j++
done
if ((i==j))
then
sum=$
fi
let i++
done
echo $sum
源代码
运行结果
shell求质数
for ((i》101000;i《102000;i++))
i 没有赋初值,默认是从0开始哦。这里是 i=101000 吧
if
这句不对,只有在(( ))里才可以直接做算术运算, 只是判断表达式,不可以的。
可以用expr计算,改为 if
或者用shell内建命令let计算:
let mod=i%a
if
另外
if 也有问题,判断数值相等,用 -eq ;判断字符串相等,= 即可。
== 是C语言里的用法。
求用shell编一个程序求出1到100以内的素数
#!/bin/bash
function isPrime()
{
local number=$1
local i
if ;then
return 0
fi
for ((i=2;i《=$number/2;i++))
do
if
then
return 0
fi
done
return 1;
}
for i in $(seq 100)
do
isPrime $i
if ;then
echo $i
fi
done
linux 编写程序求出100以内质数
#include 《stdio.h》
int main()
{
for(int i=2;i《=100;i++)/*确定范围:2——100*/
{
for(int k=2;k《i;k++)
{
if(i%k==0)break;/*如果找到一个不是1或者它本身的因子,则停止该循环,此时k《i*/
}
if(k==i)printf("%d\n",i);/*当k=i时表明i不存在除1和本身以外因子,因而它是素数,打出来*/
}
}