【shell 指令碼】求最大公約數
====== gcd.sh======
#!/bin/bash
# gcd.sh: 最大公約數
# 使用Euclid的演算法
# 兩個整數的"最大公約數" (gcd),
#+ 就是兩個整數所能夠同時整除的最大的數.
# Euclid演算法採用連續除法.
# 在每一次迴圈中,
#+ 被除數 #+ 除數 #+ 直到 餘數 = 0.
#+ 在最後一次迴圈中, gcd = 被除數.
#
# ------------------------------------------------------
# 引數檢查
ARGS=2
E_BADARGS=65
if [ $# -ne "$ARGS" ]
then
echo "Usage: `basename $0` first-number second-number"
exit $E_BADARGS
fi
# ------------------------------------------------------
function 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 :
# --------
# 檢查傳遞進來的命令列引數來確保它們都是整數.
#+ 如果不是整數, 那就給出一個適當的錯誤訊息並退出指令碼
=======測試=======
root@client.example.com ~/yang # ./gcd.sh
Usage: gcd.sh first-number second-number
root@client.example.com ~/yang # ./gcd.sh 55 3
GCD of 55 and 3 = 1
#!/bin/bash
# gcd.sh: 最大公約數
# 使用Euclid的演算法
# 兩個整數的"最大公約數" (gcd),
#+ 就是兩個整數所能夠同時整除的最大的數.
# Euclid演算法採用連續除法.
# 在每一次迴圈中,
#+ 被除數 #+ 除數 #+ 直到 餘數 = 0.
#+ 在最後一次迴圈中, gcd = 被除數.
#
# ------------------------------------------------------
# 引數檢查
ARGS=2
E_BADARGS=65
if [ $# -ne "$ARGS" ]
then
echo "Usage: `basename $0` first-number second-number"
exit $E_BADARGS
fi
# ------------------------------------------------------
function 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 :
# --------
# 檢查傳遞進來的命令列引數來確保它們都是整數.
#+ 如果不是整數, 那就給出一個適當的錯誤訊息並退出指令碼
=======測試=======
root@client.example.com ~/yang # ./gcd.sh
Usage: gcd.sh first-number second-number
root@client.example.com ~/yang # ./gcd.sh 55 3
GCD of 55 and 3 = 1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-690018/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 求最大公公約數(最大公因數)—— 歐幾里得演算法演算法
- java演算法 求最大公約數Java演算法
- python用輾轉相除法求最大公約數Python
- 輾轉相除法求最大公約數——[js練習]JS
- 最大公約數GCDGC
- 6-8 使用函式求最大公約數 (10分)函式
- 面試官:來寫個程式碼求一下兩個數的最大公約數吧面試
- C. 最大公約數
- shell指令碼:批次傳送curl請求指令碼
- 演算法設計與分析:求兩個自然數的最大公約數演算法
- 求一個數的最大公約數的三種思路——解題筆記筆記
- 【shell 】求兩個檔案相加的指令碼指令碼
- 最大公約數和最小公倍數
- C語言 用更相減損術求最大公約數,最小公倍數C語言
- 求兩個正整數的最大公約數與最小公倍數--C#實現C#
- 求多個數最大公約數、最小公倍數的一種變換演算法演算法
- 最大公約數的演算法演算法
- php判斷二個數最大公約數PHP
- C語言第七篇:輾轉相除法求最大公約數C語言
- 利用shell指令碼統計程式碼行數指令碼
- SHELL指令碼每月最後一天判斷指令碼
- shell指令碼指令碼
- python語言程式設計——求最大公約數和最小公倍數演算法Python程式設計演算法
- 【演算法拾遺】最大公約數演算法
- 最大公約數與歐幾里得演算法演算法
- C++:最小公倍數與最大公約數C++
- Shell 指令碼程式併發&程式數控制指令碼
- shell指令碼的命令列引數 - todo指令碼命令列
- bash shell指令碼接受多個引數指令碼
- [Shell] Shell 生成 HTML指令碼HTML指令碼
- 歐幾里德演算法(又稱輾轉相除法)求最大公約數,以及最小公倍數演算法
- 最大公約數和最小公倍數--java實現Java
- 最大公約數與最小公倍數演算法演算法
- c語言遞迴函式實現求最大公約數(Euclid演算法)C語言遞迴函式演算法
- shell指令碼(二)指令碼
- shell指令碼心得指令碼
- shell指令碼案例指令碼
- 常用shell指令碼指令碼