用欧几里得算法把(150,42)表示为150和42的倍数和

2025-05-10 14:03:50

第一轮计算105÷8猱蝰逾鸾5=1...20,第二轮计算85÷20=4...5,第三轮计算20÷5=4第三轮没有余数,因此105和85的最大公约数就是第三轮计算的被除数5,

至于C语言编程,下边是我自己写的G函数(思想就是辗转相除法求最大公约数)只要m除以n的余数不等于0,就继续执行while循环体内的代码。

用欧几里得算法把(150,42)表示为150和42的倍数和

扩展质量:

欧几里德算法是计算两个数最大公约数的传统算法,他无论从理论还是从效率上都是很好的。但是他有一个致命的缺陷,这个缺陷只有在大素数时才会显现出来。

硬件平台,一般整数最多也就是64位,对于这样的整数,计算两个数之间的模是很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。

但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过 64位的整数的模,用户也许不得不采用类似于多位数除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算 128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢