`
bliuqing
  • 浏览: 66451 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

shell求最大公约数

阅读更多
  1 #!/bin/bash
   2 # gcd.sh: 最大公约数
   3 #         用Euclid运算法则
   4
   5 #  两个整数的"最大公约数"
   6 #+ 是能被这两个整数整除的大最整数.
   7
   8 #  Euclid运算法则采用逐次除法.
   9 #  每一次都重新赋值,
  10 #+ 被除数 <---  除数
  11 #+ 除数  <---  余数
  12 #+ 直到 余数 = 0.
  13 #+ 最后被传递的值中:最大公约数 = 被除数.
  14 #
  15 #  关于Euclid运算法则的讨论有一个出色的讨论,
  16 #  访问Jim Loy的网站, http://www.jimloy.com/number/euclids.htm.
  17
  18
  19 # ------------------------------------------------------
  20 # 参数检查
  21 ARGS=2
  22 E_BADARGS=65
  23
  24 if [ $# -ne "$ARGS" ]
  25 then
  26   echo "Usage: `basename $0` first-number second-number"
  27   exit $E_BADARGS
  28 fi
  29 # ------------------------------------------------------
  30
  31
  32 gcd ()
  33 {
  34
  35   dividend=$1                    #  随意赋值.
  36   divisor=$2                     #+ 这里在两个参数赋大的还是小的都没有关系.
  37                                  #  为什么?
  38
  39   remainder=1                    #  如果在循环中使用未初始化的变量,
  40                                  #+ 在循环中第一个传递值会使它返回一个错误信息
  41                                  #
  42
  43   until [ "$remainder" -eq 0 ]
  44   do
  45     let "remainder = $dividend % $divisor"
  46     dividend=$divisor            # 现在用最小的两个数字来重复.
  47     divisor=$remainder
  48   done                           # Euclid运算法则
  49
  50 }                                # 最后的$dividend变量值就是最大公约数.
  51
  52
  53 gcd $1 $2
  54
  55 echo; echo "GCD of $1 and $2 = $dividend"; echo
  56
  57
  58 # 练习:
  59 # --------
  60 #  检测命令行参数以确保它们是整数,
  61 #+ 如果不是整数则给出一个适当的错误信息并退出脚本.
  62
  63 exit 0
分享到:
评论

相关推荐

    C++机试常见代码.pdf

    - **辗转相除法**:也称为欧几里得算法,是通过连续取余直到余数为0来求两个数的最大公约数。如示例代码所示,先将较大的数赋值给`a`,较小的数赋值给`b`,然后用`a`除以`b`取余,将余数赋给`c`,接着用`b`替换`a`...

    shell数组常用实例分享

    Shell 数组常用实例分享 shell 数组是 Unix 系统中的一个基本概念,它允许用户在 shell 中存储和操作一组数据。在本文中,我们将分享一些常用的 shell 数组实例,供大家学习参考。 1. 将字符串放在数组中,获取其...

    经典常用算法(含代码)

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 选择、插入、气泡排序 Shell 排序法 - 改良的插入排序 Shaker 排序法 - 改良的气泡排序 Heap 排序法 - 改良的...

    经典算法大全,常用的算法都在这里

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 ...

    C语言经典算法大全(几十个经典案例,都有详尽代码)

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 ...

    蓝桥杯信息学奥赛练习试题

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 ...

    C-Program-examples.rar_2维码 C语言_c 卡牌游戏_字串核对_背包问题_蒙塔卡罗法

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 排列...

    c语言经典算法包括老掉牙,汉诺塔,三色旗

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 排列...

    C语言经典算法大全

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算  关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem)  集合问题 ...

    数据结构经典例子程序及其源代码

    "辗转相除"的源代码将演示如何通过不断地用大数除以小数并取余数,直至余数为0,从而得到最大公约数。 其他如"排序二叉树"可能是指二叉搜索树,一种特殊的二叉树,其中每个节点的值都大于其左子树中的所有节点值,...

    C实用学习代码

    这部分代码可能包含整数运算和数学逻辑,如欧几里得算法来求最大公因数,以及求解最小公倍数的方法。 5. **PrintXingYuanTu**:打印星形图案。通常用于教学基本控制流(如循环)和字符输出,例如使用嵌套循环来绘制...

    RSA Encryption Algorithm in a Nut Shell

    1. **欧几里得算法**:用于寻找两个整数的最大公约数(GCD),以及扩展欧几里得算法,用于解决线性同余方程,找到一个整数x,使得ax ≡ b (mod m)有解。 2. **费马小定理**:如果p是质数且a不是p的倍数,则a^(p-1) ...

    数据结构与算法

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 ...

    java各种经典算法

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 ...

    经典常用算法 河内塔

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 ...

    Java和C语言实现各种经典算法(含代码图例)

    最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps赌博游戏 约瑟夫问题(Josephus Problem) 集合问题 ...

    Gcd and Lcm-开源

    最大公约数是指两个或多个非零整数共有的最大的正整数因数。GCD在数据结构和算法中有着重要的作用,例如在简化分数、求解线性同余方程等场景下。 **扩展欧几里得算法(Extended Euclidean Algorithm)** 扩展欧几里得...

    经典算法大全.pdf

    在算法类别中,背包问题、欧几里得算法(用于求最大公约数)、Eratosthenes筛法(用于求质数)、超长整数运算、因式分解、阿姆斯壮数、最大访问数、河内之塔、矩阵问题(包括稀疏矩阵、上三角矩阵、对称矩阵和幻方阵...

Global site tag (gtag.js) - Google Analytics