本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅
1 #!/bin/bash 2 #求两个整数的最大公约数 3 4 E_BADARGS=65 5 6 #如果参数个数不为2,以参数错误退出 7 if [ $# -ne 2 ] 8 then 9 echo "Usage: `basename $0` first-number second-number"10 exit $E_BADARGS11 fi12 13 #如果参数非整数或参数值为0,以参数错误退出14 for i in $@15 do16 if [ $i=~[0-9]+ ] #"=~"后面表示要跟正则表达式,+在正则表达式中表示前面的内容至少匹配一次17 then18 if [ $i -eq 0 ]19 then20 echo "Usage: `basename $0` parameter can't be zero"21 exit $E_BADARGS22 fi23 else24 echo "Usage: `basename $0` parameter must be integer"25 exit $E_BADARGS26 fi27 done28 29 #设计一个gcd()函数,利用辗转相除法(欧几里德算法)求最大公约数30 gcd()31 {32 remainder=133 dividend=$134 divisor=$235 36 until [ $remainder -eq 0 ]37 do38 let "remainder=$dividend % $divisor"39 dividend=$divisor40 divisor=$remainder41 done42 }43 44 gcd $1 $245 46 echo "gcd of $1 and $2 is: $devidend"47 48 exit 0
在改编这个脚本的时候,我的考虑点主要有以下:
1. 所传的参数是不是要排除非整数的情况?
非整数的情况第一次我用echo $i | sed '/s/^[0-9]*$/''/g' && echo $?来排除,如果第一条命令正确执行,$?应该返回0,但是我们有更好的方法,即“=~"后面跟正则的方式
2. 参数值为0的情况是不是要排除在外?
在判断$i为整数的判断下再嵌套一个判断[ $i -eq 0 ]
3. 参数个数怎么控制?
[ $# -eq 2 ]或[ $# -ne 2 ]就可以排除空参数或参数个数不为2
4. 欧几里德算法中对于$1
先看$1>$2的情况
$1=65 $2=15
第一个循环:5=65 % 15
dividend=15
divisor=5
第二次循环 0=15%5
dividend=5
divisor=0
退出循环,gcd=$dividend=5
再看$1
$1=15 $2=65
第一次循环:15=15 % 65
dividend=65
divisor=15
第二次循环:5=65 % 15
dividend=15
divisor=5
第三次循环:0=15 % 5
dividend=5
divisor=0
退出循环,gcd=$dividend=5
可知$1$2的情况多了一个循环,结果是一样的
以上是兩個整數的最大公約數怎麼達成的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在javascript中,可以利用toFixed()函数来将整数转为小数,该函数能够把整数转换为指定小数位数的数字;语法“number.toFixed(x)”,参数“x”规定小数的位数。

日期和时间值的操作是编程的一个重要方面,Python语言为此提供了一个有用的内置模块,称为datetime。但是,在某些情况下,可能需要将DateTime对象转换为整数值,以便执行特定的操作或计算。在Python中将DateTime转换为整数有多种方法,每种方法都有自己的优点和缺点。在本文中,我们将深入研究这些方法并检查每种方法何时适合使用。读完本文后,您将全面了解如何在Python中有效地将DateTime对象转换为整数,并能够为您的特定编程任务选择最合适的方法。方法一:使用timestamp

整数的正则表达式有:1、匹配正整数:^[1-9]\d*$;2、匹配负整数:^-[1-9]\d*$;3、匹配正整数和负整数:^-?\d+$;4、匹配非零整数:^(0|[1-9]\d*)$;5、匹配整数(包括零):^-?\d+$。

PHP中时间戳是一种表示时间的整数形式,通常是自Unix元年(1970年1月1日00:00:00GMT)起经过的秒数。在编程中,我们经常需要将时间戳转换为其他形式的整数,下面就为大家介绍如何将PHP时间戳转换为整数的方法,以及具体的代码示例。在PHP中,我们可以使用strtotime()函数将时间字符串转换为时间戳,然后再使用date

MySQL中如何使用INET_ATON函数将IP地址转换为整数?在网络编程中,经常会涉及到IP地址的处理和存储。IP地址通常采用点分十进制(dotted-decimal)形式表示,例如192.168.1.1。然而,对于一些需要高效存储和处理IP地址的情景,将IP地址转换为整数形式可能更加方便和有效。在MySQL数据库中,有一个内置函数叫做INET_ATON

如何使用Integer类的parseInt()方法将字符串转换为整数在编程中,我们经常需要将一个字符串转换为整数。Java提供了一个非常方便的方法,即使用Integer类的parseInt()方法来实现这个功能。本文将详细介绍Integer类的parseInt()方法的使用,以及提供一些使用该方法的示例代码。Integer类是Java中表示整数的包装类之一,

在SharePoint上安装SSL证书是保护网站安全性和提供加密连接的关键步骤。通过遵循正确的安装步骤,您可以确保网站数据的安全性,并提升在搜索引擎中的排名,为访问者提供更好的用户体验。获取SSL证书联系可信任的证书颁发机构(CA)购买SSL证书。提供所需的身份验证和域名所有权验证信息。完成验证流程后,您将收到SSL证书文件。准备证书文件使用文本编辑器打开您的SSL证书文件。将证书内容复制到一个新的文本文件中。将该文件保存为yourdomain.cer,确保将”yourdomain”

简介Python整数是主要数据类型之一,用于几乎所有主要的数学和逻辑运算。在Python中,整数是零、正整数或负整数,没有小数部分,并且具有无限的精度。它们可以用二进制、八进制和十六进制值表示。在本文中,我们将学习如何获取整数的符号。使用的方法使用与零的简单数学比较使用数学模块的copysign()函数使用numpy.sign()函数使用abs()函数创建方法方法一:使用与零的数学比较我们可以使用正数和负数的基本数学定义来查找给定整数的符号。我们使用基本的if-else结构来确定数字的符号。语法


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)