一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(5)欧几里得算法欧几里得算法求最大公约数
2008-11-28 22:36
1366 查看
一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记
用C++/lua/python/bash的四重实现(5)欧几里得算法求最大公约数
write by 九天雁翎(JTianLing) --blog.csdn.net/vagrxie
<<Data Structures and Algorithm Analysis in C++>>
--《数据结构与算法分析c++描述》 Mark Allen Weiss著 人民邮电大学出版 中文版第45面,图2-10欧几里得算法
欧几里得算法求最大公约数好像也比较出名,起码各大算法书籍都喜欢用,可能因为说明简单,却能够说明问题。
这里突然想说一句,当bash老是用C语法部分来完成也就没有那么难的变态了,只是,可能多了一点投机的成分。
再来个截图,下次再截就成惯例了。
从左自右依次是cpp,lua,python,bash。
write by 九天雁翎(JTianLing)
-- blog.csdn.net/vagrxie
以下为实现部分:
CPP:
1
#include
<stdio.h>
2 #include
<stdlib.h>
3
4 long gcd(long m, long n)
5 {
6 if(m < n)
7 {
8 long temp = m;
9 m
= n;
10 n
= temp;
11 }
12 while( n != 0)
13 {
14 long rem = m % n;
15 m
= n;
16 n
= rem;
17 }
18
19 return m;
20 }
21
22 int main(int argc, char*
argv[])
23 {
24 printf("gcd(1989,1590)=%ld/n",gcd(1989,1590));
25 printf("gcd(1590,1989)=%ld/n",gcd(1590,1989));
26 exit(0);
27 }
28
LUA:
1
#!/usr/bin/env
lua
2
3
4 function gcd(m,n)
5 if m < n then
6 m,n
= n,m
7 end
8
9 while n ~= 0 do
10 rem
= m % n
11 m
= n
12 n
= rem
13 end
14
15 return m
16 end
17
18 -- Test code
19 print("gcd(1989,1590)=" .. gcd(1989,1590))
20 print("gcd(1590,1989)=" .. gcd(1590,1989))
21
PYTHON:
1
#!/usr/bin/env
python
2
3
4 def gcd(m,n):
5 if m < n:
6 m,n
= n,m
7
8 while n != 0:
9 rem
= m % n
10 m
= n
11 n
= rem
12
13 return m
14
15 def test():
16 print "gcd(1989,1590)=" +
str(gcd(1989,1590))
17 print "gcd(1590,1989)=" +
str(gcd(1590,1989))
18
19 if __name__ == '__main__':
20 test()
21
BASH:
1
#!/usr/bin/env
bash
2
3
4 gcd()
5 {
6 m=$1
7 n=$2
8 if (( m
< n ))
9 then
10 (( temp = m ))
11 (( m = n ))
12 (( n = temp ))
13 fi
14
15 while (( n
!= 0 ))
16 do
17 (( rem = m
% n ))
18 (( m = n
))
19 (( n = rem
))
20 done
21
22 return $m
23 }
24
25
26 # test code
27 echo -n
"gcd(1989,1590)="
28 gcd 1989 1590
29 echo $?
30 echo -n
"gcd(1590,1989)="
31 gcd 1590 1989
32 echo $?
33
34
35
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
相关文章推荐
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(4)二分搜索算法
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(1) f(x) = 2f(x-1) + x^2
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(6)高效率的幂运算
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(2) IntCell类
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格
- 《数据结构与算法分析--C++描述》(第三版)学习笔记系列一:BST的实现
- 学习笔记之Python 切片:利用切片操作,实现一个trim()函数,去除字符串首尾的空格
- lua笔记 --- 一个C++调用lua函数的类的实现
- [C++学习笔记14]动态创建对象(定义静态方法实现在map查找具体类名对应的创建函数,并返回函数指针,map真是一个万能类)good
- lua笔记 --- 一个C++调用lua函数的类的实现
- 数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法
- c++实现用欧几里得算法求两个整数的最大公约数
- C++学习笔记之---实现最大最小值函数
- 函数编译lua笔记 --- 一个C++调用lua函数的类的实现
- python学习笔记二:实现一个时钟
- python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
- python基础学习——利用Flask实现一个简单博客
- Python 学习笔记(自用)(有C++基础)(连载)