博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
扩展欧几里得算法与模乘逆元的程序
阅读量:6703 次
发布时间:2019-06-25

本文共 1175 字,大约阅读时间需要 3 分钟。

代码来自维基百科的。

扩展欧几里得算法程序:

function extended_gcd(a, b)    s := 0;    old_s := 1    t := 1;    old_t := 0    r := b;    old_r := a    while r ≠ 0        quotient := old_r div r        (old_r, r) := (r, old_r - quotient * r)        (old_s, s) := (s, old_s - quotient * s)        (old_t, t) := (t, old_t - quotient * t)    output "Bézout coefficients:", (old_s, old_t)    output "greatest common divisor:", old_r    output "quotients by the gcd:", (t, s)
两段计算模乘逆元的程序分别如下:

function inverse(a, n)    t := 0;     newt := 1;        r := n;     newr := a;        while newr ≠ 0        quotient := r div newr        (t, newt) := (newt, t - quotient * newt)         (r, newr) := (newr, r - quotient * newr)    if r > 1 then return "a is not invertible"    if t < 0 then t := t + n    return t
function inverse(a, p)    t := 0;     newt := 1;        r := p;     newr := a;        while newr ≠ 0        quotient := r div newr        (r, newr) := (newr, r - quotient * newr)        (t, newt) := (newt, t - quotient * newt)     if degree(r) > 0 then         return "Either p is not irreducible or a is a multiple of p"    return (1/r) * t

转载于:https://www.cnblogs.com/tigerisland/p/7564852.html

你可能感兴趣的文章
从0开始弄一个面向OC数据库(三)--数据库升级,数据迁移,删除数据
查看>>
css面试题实现元素垂直水平居中-包括未知宽高的元素五种回答
查看>>
NDK开发系列第一章
查看>>
『中级篇』容器的技术概述(二)
查看>>
2018年终总结
查看>>
想提高爬虫效率?aiohttp 了解下
查看>>
阿里系统软件迎战“双11”超高流量峰值全纪录
查看>>
锁屏事件监听
查看>>
Flutter 对 iOS、Android(双端开发者)的快速理解(一)
查看>>
个人博客开发系列:文章实时保存
查看>>
javascript模块化发展历程
查看>>
深入Python进程间通信原理--图文版
查看>>
springboot 想用fastjson的话pom一定要改
查看>>
iOS 审核被拒解决方案总结
查看>>
webpack 搭建vue多单页应用
查看>>
基于8.0源码解析:startService 启动过程
查看>>
vue 同页面不同组件数据传递
查看>>
人人都能学会的python编程教程1:第一行代码
查看>>
CIP宣布推出新的超长期支持Kernel,推动自动化、机器学习和人工智能
查看>>
java bean 对象属性复制框架BeanMapping-01-入门案例
查看>>