当前位置: 首页 > news >正文

Linux centos7 bash编程——-求质数和

训练项目:使用函数求质数和。

定义一个函数IsPrime(),据此判断一个数是否为质数

由用户输入一个整数,求出比此数大的两个最小质数之和。

一、解决思路:

1.先在键盘上输入一个整数

2.求出比此数大的最小质数

3.再求出比此质数大的另一个最小质数

4.设置计数变量,等于2时退出求质数

5.求两质数和,并输出

二、知识点

1.质数

质数(也称素数),是指除了1和该数本身,不能被任何正整数整除的正整数。判断一个正整数m是否为质数,只要判断m可否被2~根号m之中的任何一个正整数整除,如果m不能被此范围中任何一个正整数整除,m即为质数,否则m为合数。

2.条件判断

判断一个数是否为质数,C语言、Python等高级语言,都有这类训练,是综合运用变量、循环结构、分支语句、函数等知识的典型案例。各有不同,但思路基本一致。

与其他高级编程语言一样,变量与函数是重要概念,只有多练习才能深刻体会。

3.函数

bash中定义函数可加function关键字,也可不加,函数命名要符合规则,最低要求是见名知意,不能用数字、a、b、c等单个字符,不用中文(这是习惯,实际上bash支持中文函数名)。

bash函数传参与Python、C语言不一样,可以考虑标准输入传参,或运行函数时位置传参,而bash代码中用$1接收这个参数

三、源代码

下面是本案例的详细代码,仅供参考。

代码中,引用变量或条件判断写法很多,目的是说明这些方法可行,实际工作中最好选择编写一种格式,不要随意变换格式。

#!/bin/bash

## bash编程_函数学习与应用

## 求质数和

## 先定义一个判断函数IsPrime()

IsPrime(){

  m=$1

  i=2 # 判断一个数一般从2开始检测求余数

  while [ $i -le $m ]

  do

     flag=True #定义flag变量,表示查询的数是质数

     ## 一般对于布尔型变量,仅有正确/错误两个值,可以用1/0表达,也可以用True/False表达。

     j=2

     num1=$(bc <<< "sqrt($m)"+1) # 判断质数时,到此数即可,当录入数小时,不明显,录入数>30明显速度更快

     ## sqrt($m) 求变量$m的平方根 bc 是科学计算器

     ## 当录入数比较小时,num1可以用$m/2代替

     while [ $j -le $num1 ]

     do

        if [ `expr $i % $j` -eq 0 ];then

          flag=False

          break

        fi

        j=`expr $j + 1`

     done

     i=`expr $i + 1`

  done

}

read -p "请录入一个正整数" num

k=$num

sum=0

cnt=0 # 设置计数器,后面仅需要两个质数,需要在循环前设置计数器初始值

while true # 此处应用while循环而不是for循环,主要是我们不明确有多少次循环

## 此处true代表多次循环,无条件。也可以用:或任意一个数代替,大多数人喜欢用while (1)

do

  ((k++))

  # 此处先设置自增1,以保证标准输入是质数时仍要先循环后判断

  IsPrime $k ## 此处用位置变量进行函数传参

  if [ $flag == True ];then

     let cnt+=1

     let sum+=$k

     echo "${k}是质数"  ## 此处打印一下,可查看质数

  fi

  if [ $cnt -eq 2 ];then

     break

  fi

done

echo "比 $num 大的两个最小素数之和为 $sum "

四、效果

小结

bash中定义函数时是否用关键字function由编写者确定。函数传参与C语言、python语言不同,定义函数时也有(){}结构,但()内不能添加参数,只能进行位置传参。

与C语言、python语言不同,只能先定义函数,再使用。函数位置不能随意放置。

bash中的表达式有多种写法:let cnt+=1与((cnt++))功能相同。同样,此表达式也可以写作:

cnt=`expr $cnt + 1`

条件判断test 与[  ]功能相同。而[  ]与[[  ]]略有不同,使用时多加注意。

相关文章:

Linux centos7 bash编程——-求质数和

训练项目&#xff1a;使用函数求质数和。 定义一个函数IsPrime()&#xff0c;据此判断一个数是否为质数 由用户输入一个整数&#xff0c;求出比此数大的两个最小质数之和。 一、解决思路: 1.先在键盘上输入一个整数 2.求出比此数大的最小质数 3.再求出比此质数大的另一个…...

给Hexo添加说说功能

首发博客地址 官网地址 效果 &#x1f440; 前言 GitHub 仓库&#xff1a;Artitalk.js &#x1f389; 特性 增删查改全方面支持 支持针对每条说说的评论 支持 Markdown/html 语法 支持图片上传 &#x1f680; 快速使用 下列主题已将本项目整合进去&#xff0c;可以直接使用。 感…...

Tensorflow调用训练好的yolov5模型进行推理

文章目录 1、安装TensorFlow-GPU版本1.2、验证是否安装正常 2、将训练好的pt文件转换成onnx文件2.2、什么是Onnx模型和Tensorflow模型2.1、将onnx文件转换成pb文件 1、安装TensorFlow-GPU版本 1、创建虚拟环境python3.8 conda create -n TF2.4 python3.82、进入虚拟环境 conda…...

【场景方案】我所积累的一些跨页面的数据传递方式,持续更新,欢迎补充~

文章目录 Iframe内嵌相互传递BroadcastChannel同标签页数据传递localStorage中间人传递未完待续... Iframe内嵌相互传递 使用window.postMessage()的这个html5特性去跨域传递数据&#xff0c;不受跨域限制。 父层&#xff1a; sendMes(){ // 向iframe发送let iframdom this…...

ASP.NET Core 的错误页面

异常处理 Developer 环境的异常页面 ASP.NET Core App 会可以在开发阶段用UseDeveloperExceptionPage启用 Developer 异常页面&#xff1a; app.UseDeveloperExceptionPage();当遇到Unhandled 异常信息时&#xff0c;可以输出异常信息页面&#xff1a; 异常信息包括&#xf…...

Android静态ip设置的坑

Android静态ip设置的坑 Android静态ip设置&#xff0c;对于这个功能&#xff0c;如果没有接触过&#xff0c;会给人感觉是个特别简单的功能&#xff0c;直接调用系统的接口即可&#xff0c;其实这个功能还是有许多坑的&#xff0c;因为谷歌在Android SDK中对相关的API进行非系…...

电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。

一、TPS63070RNMR&#xff0c;降压升压 开关稳压器 IC 正 可调式 2.5V 1 输出 3.6A&#xff08;开关&#xff09; 15-PowerVFQFN 1、概述 TPS63070高输入电压降压-升压转换器是一款高效的低静态电流降压-升压转换器。这些器件适用于输入电压高于或低于输出电压的应用。升压模式…...

k8s(kubernetes)介绍篇

一、Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案&#xff0c;是 Google 开源的一个容器集群管理系统&#xff0c;Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台&#xff0c;更是一个开放平台&#xff0c;对…...

gRPC + Spring Boot 编程教程 - piot

在本文中&#xff0c;您将学习如何实现通过 gRPC 通信的 Spring Boot 应用程序。gRPC 是一个现代开源远程过程调用 (RPC) 框架&#xff0c;可以在任何环境中运行。默认情况下&#xff0c;它使用 Google 的 Protocol Buffer 来序列化和反序列化结构化数据。当然&#xff0c;我们…...

新建Spring Boot项目

使用IDEA 来创建: 文件-新建-项目 填写项目元数据 选择依赖项 此处可以先选 web-spring web 关于这些依赖项&#xff0c;更多可参考&#xff1a; IDEA创建Spring boot项目时各依赖的说明&#xff08;Developer Tools篇&#xff09;[1] 项目结构介绍 展开项目&#xff0c;此时…...

Python数据分析的第三方库

ython作为一种简单易学、功能强大的编程语言&#xff0c;逐渐成为数据分析领域的首选工具。在Python数据分析中&#xff0c;有许多优秀的第三方库可以帮助我们进行数据处理、可视化和建模。 常用第三方库&#xff1a; NumPy&#xff1a;提供了高性能的多维数组对象和用于数组…...

EF列表分页查询(单表、多表),排除参数为空的条件

在日常使用EF框架查询数据库时&#xff0c;有时传入的参数为空,那么我们应该把该条件排除&#xff0c;不应列入组装的sql中&#xff0c;本篇文件以分页查询为例介绍EF框架的单表、多表的多条件查询&#xff0c;参数为空时排除条件。 首先我们要有派生自DBContext类的数据上下文…...

VisualStudio配置pybind11-Python调用C++方法

个人测试下来Debug生成的dll改pyd&#xff0c;py中import会报错gilstate->autoInterpreterState 如果遇到同样问题使用Release吧 目录 1.安装pybind11 1.pip&#xff1a; 2.github&#xff1a; 2.配置VS工程 2.在VC目录中的包含目录添加&#xff1a; 3.在VC目录中的库目录…...

ZZULIOJ 1164: 字符串加密,Java

ZZULIOJ 1164: 字符串加密&#xff0c;Java 题目描述 输入一串字符&#xff08;长度不超过100&#xff09;和一个正整数k&#xff0c;将其中的英文字母加密并输出加密后的字符串&#xff0c;非英文字母不变。加密思想&#xff1a;将每个字母c加一个序数k&#xff0c;即用它后…...

联合体(共用体)的简单介绍

目录 概念&#xff1a; 联合的声明&#xff1a; 类比结构体&#xff1a; 联合体的大小&#xff1a; 联合的⼤⼩⾄少是最⼤成员的⼤⼩ 联合体的空间是共用的 联合体内部成员的赋值&#xff1a; 当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候&#xff0c;就要对⻬到最⼤对⻬…...

Ansible学习笔记8

group模块&#xff1a; 创建一个group组&#xff1a; [rootlocalhost ~]# ansible group1 -m group -a "nameaaa gid5000" 192.168.17.105 | CHANGED > {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}…...

五子棋游戏禁手算法的改进

五子棋游戏禁手算法的改进 五子棋最新的禁手规则&#xff1a; 1&#xff0e;黑棋禁手判负、白棋无禁手。黑棋禁手有“三三”&#xff08;包括“四三三”&#xff09;、“四四”&#xff08;包括“四四三”&#xff09;和“长连”。黑棋只能以“四三”取胜。 2&#xff0e;黑方…...

基于 Debian 12 的 Devuan GNU+Linux 5 为软件自由爱好者而生

导读Devuan 开发人员宣布发布 Devuan GNULinux 5.0 “代达罗斯 “发行版&#xff0c;它是 Debian GNU/Linux 操作系统的 100% 衍生版本&#xff0c;不包含 systemd 和相关组件。 Devuan GNULinux 5 基于最新的 Debian GNU/Linux 12 “书虫 “操作系统系列&#xff0c;采用长期支…...

算法系列-力扣234-回文链表判定

回文链表判定 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 方法一&#xff1a;栈反转对比法 解题思路&#xff1a;找到中间节点后用栈辅助反转对比 解题方法&#xff1…...

算法通关村——海量数据场景下的热门算法题的处理方法

1. 从40个亿中产生一个不存在的整数 题目要求&#xff1a;给定一个输入文件&#xff0c;包含40亿个非负整数&#xff0c;请设计一个算法&#xff0c;产生一个不存在该文件中的整数&#xff0c;假设你有1GB的内存来完成这项任务。 ● 进阶&#xff1a;如果只有10MB的内存可用&a…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...