博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密码学编程实验:扩展欧几里得算法 C++实现
阅读量:3949 次
发布时间:2019-05-24

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

//密码学实验//扩展欧几里得算法//#include "pch.h"#include 
#include
#include
using namespace std;int exgcd(int a, int b, int& x, int& y)//扩展欧几里得算法{
if (b == 0) {
x = 1; y = 0; return a; //到达递归边界开始向上一层返回 } int r = exgcd(b, a % b, x, y); int temp = y; //把x y变成上一层的 y = x - (a / b) * y; x = temp; return r; //得到a b的最大公因数}int multi(int a, int b, int& x, int& y){
int gcd = exgcd(a, b, x, y); if (gcd != 1)//说明不存在乘法逆元 {
cout << "乘法逆元不存在!" << endl; return -1; } else {
return (1 - b * y) / a; }}int main(){
int a, b, temp, x, y; cout << "请输入要求的第一个数a:"; cin >> a; cout << "请输入要求的第一个数b:"; cin >> b; if (a < b) {
temp = a; a = b; b = temp; }//交换顺序,大在前 cout << "最大公因数为:" << exgcd(a, b, x, y) << endl; cout << a << "关于1模" << b << "的乘法逆元为:" << multi(a, b, x, y) << endl; cout << b << "关于1模" <
<< "的乘法逆元为:" << multi(b, a, x, y) << endl; return main(); system("pause"); return 0;}

转载地址:http://xmgwi.baihongyu.com/

你可能感兴趣的文章
objdump的使用方法
查看>>
编译错误处理noproguard.classes-with-local.dex已杀死
查看>>
LTE - CSFB技术
查看>>
GSM链路层信令协议
查看>>
技术道德
查看>>
“需求为王”才是根本
查看>>
高效率的危害
查看>>
寻找边缘性创新
查看>>
让创意瞄准市场
查看>>
高效经理人应具有的八个重要习惯
查看>>
优秀的领导者能读懂人才
查看>>
大智若愚也是领导力
查看>>
android如何编译MTK的模拟器
查看>>
android如何添加AP中要使用的第三方JAR文件
查看>>
利用sudo命令为Ubuntu分配管理权限
查看>>
Ubuntu下几个重要apt-get命令用法与加速UBUNTU
查看>>
Ubuntu中网页各种插件安装命令
查看>>
使用tar命令备份Ubuntu系统
查看>>
ubuntu flash 文字乱码解决方案
查看>>
在ubuntu中运行exe文件
查看>>