最大公约数与最小公倍数

来源:互联网 发布:让程序员生气的话 编辑:程序博客网 时间:2024/05/30 23:12

一、两个数的最大公约数和最小公倍数

1.常规求解

 

求两个数的最小公倍数lcm(int m, int n)可以直接通过,m * n / gcd(m, n)得出

 

 

 

 

2.欧几里德算法

3.Stein算法

 

(参考百度文库http://baike.baidu.com/view/47637.htm#5)

背景:

    现在的硬件平台,一般整数最多也就是64位,对于这样的整数,计算两个数之间的模是很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过64位的整数的模,用户也许不得不采用类似于多位数除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。

 

 

原创粉丝点击