发新话题
打印

求助:辗转相除法的算法复杂度

求助:辗转相除法的算法复杂度

有两个自然数,m和n(其中n<m),用辗转相除法求其最大公约数,过程如下:

假设m=49,n=28.
先用其中的较大数49除以较小数28,余数为21(第一次运算).
然后用28除以刚才得到的余数21,得到余数为7(第二次运算).
再用21除以7,余数为0,得到结论-----7是49和28的最大公约数(第三次运算).

现在我要问的问题是:对于任意的m和n,最不利情况下,要进行多少次运算才能得到结果?


为更进一步说明,我举另外一种算法:
假设m=49,n=28.
先用其中的较大数49除以较小数28,余数不为0(第一次运算).
然后分别用49和28除以27,不能同时整除(第二次运算).
再分别用49和28除以26,不能整除(第三次运算).
...........................
当分别用49和28除以7时,能同时整除(第n次运算).
这种方法最不利的情况是两个数互质情况,将运行n遍(n为m和n中的较小数)

[ 本帖最后由 物理大腕 于 2007-9-13 12:55 编辑 ]
吾爱吾师,吾更爱真理。
欢迎注册科技世界网,欢迎光临我的博客

TOP

还有这么问的?我们书上的题都是问最少要多少次……
本人老矣,尚能饭否
练习五笔ING……

TOP

当然最少是一次就可以了啊,这个算法复杂度的问题当然是要问最坏情况下了.
吾爱吾师,吾更爱真理。
欢迎注册科技世界网,欢迎光临我的博客

TOP

引用:
原帖由 李牧原 于 2007-9-14 06:22 发表
还有这么问的?我们书上的题都是问最少要多少次……
书上的问法不专业,应该是“算法的时间复杂度”。

辗转相除法的时间复杂度是对数级的,并且这个对数的底和斐波那契数列有关系。

TOP

发新话题