bash-shell高级编程--求最大公约数

一个完整的编程语言肯定少不了对计算能力的支持,同样shell脚本中也提供了对计算能力的支持,下面的脚本就是实现求两个数的最大公约数的shell脚本。
已在ubuntu16.04上验证过

#!/bin/bash
# gcd.sh: 最大公约数
#使用Euclid的算法

# 两个整数的"最大公约数" (gcd),
#+ 就是两个整数所能够同时整除的最大的数.

# Euclid算法采用连续除法.
# 在每一次循环中,
#+ 被除数 <--- 除数
#+ 除数 <--- 余数
#+ 直到 余数 = 0.
#+ 在最后一次循环中, gcd = 被除数.
#
# 关于Euclid算法的更精彩的讨论, 可以到
#+ Jim Loy的站点, http://www.jimloy.com/number/euclids.htm.

# ------------------------------------------------------
# 参数检查
ARGS=2
E_BADARGS=65

if [ $# -ne "$ARGS" ]
then
 echo "Usage: `basename $0` first-number second-number"
 exit $E_BADARGS
fi
# ------------------------------------------------------

gcd ()
{
 dividend=$1
# 随意赋值.
 divisor=$2
#+ 在这里, 哪个值给的大都没关系.
# 为什么没关系?
 remainder=1
# 如果在循环中使用了未初始化的变量,
#+ 那么在第一次循环中,
#+ 它将会产生一个错误消息.
 until [ "$remainder" -eq 0 ]
 do
let "remainder = $dividend % $divisor"
dividend=$divisor
# 现在使用两个最小的数来重复.
divisor=$remainder
 done
# Euclid的算法
}
# Last $dividend is the gcd.
gcd $1 $2
echo; echo "GCD of $1 and $2 = $dividend"; echo
# Exercise :
# --------
# 检查传递进来的命令行参数来确保它们都是整数.
#+ 如果不是整数, 那就给出一个适当的错误消息并退出脚本.
exit 0

执行结果

andrew@andrew:/work/bash/src$ bash gcd.sh  2345 56

GCD of 2345 and 56 = 7

参考资料 – bash高级编程

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Achou.Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值