问题描述:

shell程序

编写一个显示菜单的shell程序,利用函数实现简单的菜单功能,n的值由键盘输入:

===========================================

**    (1)计算1到n的奇数之和;       **

**    (2)计算1到n的阶乘;             **

**    (3)计算1到n的所有素数;       **

**    (4)退出程序。                        **

==========================================

Please enter function select and number: 1 1000

要求: 自行设计程序。关于素数计算功能应尽量选用高效算法实现。

说明:可根据以下方法中选择一种实现功能(3):计算1到n的所有素数。

附:几种素数算法

(1)简单算法

最简单的素数判断方法即直观又简单,判断n是否素数,只需要将整数2—n/2做除数,判断是否能整除n,若有某数能整除则判断其不是素数,若所有都不能整除,则判断为素数。将判断素数的功能写成一个函数,假定通过参数传递要判断的数,函数中通过位置参数$1获得.

(2)改进型算法

除2的倍数外,所有能整除奇数的都不可能是偶数,所以可以排除2的倍数,以开始先判断是2的倍数就直接返回1,否则从3开始,每次循环除数加2,这样就减少很多除法运算。

另外,对于较大的数,除数最大无需到n/2,可以到n的平方根,但shell中无法计算平方根,可以有两种解决方法,一种是通过编写C程序获取n的平方根,通过命令参数传递n到C程序中,而C程序返回平方根给shell。另一种方法是通过判断除数和商的大小来决定是否已经判断出素数,即除数大于商时,还不能整除,就已经能确定是素数了。这个算法无需求平方根,但每次循环要多做一次乘法。

可通过实际测试比较几种方法的运行时间,从而得到算法的优劣。

(3)筛法求素数

基本的筛发流程:给出一个从2开始的数表2,3,4,5,6,7,…,n。2是素数,从这个数表中删除2的倍数,剩下的下一个未删除的是下一个素数(3),再删除这个素数的倍数,…,最后余下的就是素数。在用程序实现时需要用到数组,删除一个数,就是将这数改为0,然后输出所有非0元素。


解决方案:

vi zhs3

进入后开始编写shell程序

#计算1到n的奇数之和调用语句代码:

function one(){echo "-----开始计算1到n的奇数之和,请输入你想要计算到哪个数字-----"read numsum=0for((i=1;i<=$num;i++))do  if [ $((i%2)) -ne 0 ];thenlet "sum=$sum+$i"fidoneecho "计算结果为$sum"
}

计算1到n的阶乘调用语句代码:

function two(){echo "-----开始计算1到n的阶乘,请输入你想要计算到哪个数字-----"read numsum=1for((i=1;i<=$num;i++))do  let "sum=$sum*$i"doneecho "计算结果为$sum"
}

计算1到n的所有素数调用语句代码:

function three(){echo "-----开始计算1到n的所有素数,请输入你想要计算到哪个数字-----"read numdeclare -l a for((i=1;i<=$num;i++))do for((j=1;j<=i;j++))do b=$(( $i%$j ))if [[ $b -eq 0 ]]; thena=$a+1fidoneif [[ $a -eq 2 ]]; thenecho -n $i " "fia=0doneecho
}

循环代码:

while ((flag=1))
doecho "-----请选择你要做的事情------"echo "**    (1)计算1到n的奇数之和;       **"echo "**    (2)计算1到n的阶乘;           **"echo "**    (3)计算1到n的所有素数;       **"echo "**    (4)退出程序。                 **"read selectedcase $selected in1)one;;2)two;;3)three;;4) echo "正在退出程序..."exit;;esac
done

运行结果:

bash zhs3

shell程序编程综合设计相关推荐

  1. linux系统编程综合练习-实现一个小型的shell程序(四)

    上节中已经对后台作业进行了简单处理,基本上要实现的功能已经完了,下面回过头来,对代码进行一个调整,把写得不好的地方梳理一下,给代码加入适当的注释,这种习惯其实是比较好了,由于在开发的时候时间都比较紧, ...

  2. 【可视化编程】实验4:C#窗体和控件综合设计(多文本编辑器)

    说明:这是武汉理工大学计算机学院[可视化编程C#]课程的第四次实验:多文本编辑器 >>点击查看武汉理工大学计算机专业课程资料汇总 >>点击查看WUTer计算机专业实验汇总 谨记 ...

  3. 设计一个shell程序,在/userdata目录下建立50个目录,并对每个目录给754权限!

    设计一个Shell程序,在/userdata目录下建立50个目录,即user1-user50,并设置每个目录的权限,其中其他用户的权限为:读:文件所有者的权限为:读.写.执行:文件所有者所在组的权限为 ...

  4. linux编写运行shell程序,Linux的Shell编程运行Shell程序的方法有哪些呢?

    用户可以用任何编辑程序来编写Shell程序.因为Shell程序是解释执行的,所以不需要编译成目的程序.按照Shell编程的惯例,以 bash为例,程序的第一行一般为"#!/bin/bash& ...

  5. linux下shell编程课程设计,Linux下shell编程实例

    1. 推断一文件是不是块或字符设备文件.假设是将其复制到 /dev 文件夹下 read -p "input a file:" filename if [ -b $filename ...

  6. linux脚本程序是什么意思,什么是shell脚本编程?

    什么是Shell脚本 示例: #!/bin/sh cd~ mkdirshell_tut cdshell_tut for((i=0;i<10;i++));do touchtest_$i.txt d ...

  7. java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...

    问题标题 java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题.编写一个应用程序计算圆的周长和面积,设圆的半 2019-5-23来自ip:15.196.194.53的 ...

  8. java面向对象的程序编程设计

    单核CPU在执行程序的时候,一次只能执行一个命令.这就是说,程序命令在单核CPU上是线性的.操作系统对程序命令进行管理,在不同的情况下把不同的程序命令推给单核CPU处理.操作系统简化了计算机的使用,让 ...

  9. 提升C语言程序运行效率 马尔可夫,计算机程序编程课程设计报告(马尔可夫链算法生成随机可读文本).doc...

    PAGE 1 计算机程序编程课程设计报告 (马尔可夫链算法生成随机可读文本) 引言: 马尔可夫链的数学背景: 马尔可夫链,因安德烈?马尔可夫(A.A.Markov,1856-1922)得名 ,是数学随 ...

最新文章

  1. PHP脚本执行超时的解决办法
  2. AI生成中国山水画!普林斯顿姑娘本科毕业作品,骗过70%中国人
  3. 李飞飞团队最新论文:如何对图像中的实体精准“配对”?(附代码论文)
  4. 如何下载和离线安装Chrome的CRX扩展文件包
  5. python转go_如何看待将Python代码转换成Go代码并进一步编译的 Grumpy 项目?
  6. 用python录入成绩储存程序_用Python创建成绩计算器的程序
  7. linux lsof/netstat查看进程和端口号相关命令:
  8. 开发针对特殊租户的Teams机器人
  9. 再度吐槽,PHP在centos7的安装方式稍不注意可能就打击你的积极性
  10. 【Shiro】Unsatisfied dependency expressed through method 'securityManager' parameter 3
  11. Python程序员之面试必回习题
  12. bvp解算器是什么_中科院孙晓明:算法本身并没有善恶,看你想要的目标是什么...
  13. 使用Asp.net MVC源代码调试你的应用程序
  14. 利用Python的PyPDF2库,根据论文标题批量修改pdf的文件名
  15. 华为数通笔记-数通基本概念
  16. 分手后如何忘掉你的前任1
  17. 重庆市谷歌卫星地图下载
  18. 黑马程序员java学习笔记——正则表达式、反射
  19. python实现千牛客服自动回复语_淘宝客服自动回复语录(客服自动回复大全)
  20. 易班APP登录密码加密、sig逆向分析

热门文章

  1. 艾司博讯:拼多多店铺ID查询步骤
  2. 酷睿i5 8250u和i5 8265u差距 i58250u和i58265u区别
  3. 用阴阳五行解释啥叫数据建模
  4. 小米手机Android统异常耗电,小米9耗电异常,很多米粉出现这个问题
  5. DeepLearning深度学习入门(视频笔记)
  6. java实现消息提醒功能,2021最新版!
  7. android scrollview 动画,Android ScrollView实现下拉弹回动画效果
  8. MSP430FR6989系列教程之串口通信
  9. 引起600万人共鸣的生活方式
  10. (1)AssignmentOperator赋值运算符函数注意事项