文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>求最大公约数

求最大公约数

时间:2006-06-29  来源:huanghaojie

#vi gcd
 
#!/bin/bash
 # gcd.sh: greatest common divisor
 #         Uses Euclid's algorithm

 #  The "greatest common divisor" (gcd) of two integers
 #+ is the largest integer that will divide both, leaving no remainder.

 #  Euclid's algorithm uses successive division.
 #  In each pass,
 #+ dividend <---  divisor
 #+ divisor  <---  remainder
 #+ until remainder = 0.
 #+ The gcd = dividend, on the final pass.
 #
 #  For an excellent discussion of Euclid's algorithm, see
 #+ Jim Loy's site, http://www.jimloy.com/number/euclids.htm.

 # ------------------------------------------------------
 # Argument check
 ARGS=2
 E_BADARGS=65

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

 gcd ()
 {

   dividend=$1                    #  Arbitrary assignment.
   divisor=$2                     #! It doesn't matter which of the two is large r.
                                  #  Why not?

   remainder=1                    #  If uninitialized variable used in loop,
                                  #+ it results in an error message
                                  #+ on the first pass through loop.

   until [ "$remainder" -eq 0 ]
   do
     let "remainder = $dividend % $divisor"
     dividend=$divisor            # Now repeat with 2 smallest numbers.
     divisor=$remainder
   done                           # Euclid's algorithm

 }                                # Last $dividend is the gcd.

 gcd $1 $2

 echo; echo "GCD of $1 and $2 = $dividend"; echo

 # Exercise :
 # --------
 #  Check command-line arguments to make sure they are integers,
 #+ and exit the script with an appropriate error message if not.

 exit 0

#gcd  9 12 
GCD of 9 and 12 = 3
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载