⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 euclid.cpp

📁 计算机网络安全中的DES加密解密算法
💻 CPP
字号:
//用扩展欧几里德算法求k模z的乘法逆元v(若k,z互素,则存在v)。

#include <iostream.h>

void main()
{
	long k,z,v,g;
	long Euclid(long,long,long&);
	cout<<"输入整数k,z (0<k<z) : ";
	cin>>k>>z;
	g=Euclid(z,k,v);
	if (g!=1)
		cout<<k<<"没有模"<<z<<"的乘法逆元\n"
		<<k<<"与"<<z<<"的最大公约数为"<<g<<endl;
	else
		cout<<k<<"有模"<<z<<"的乘法逆元"<<v<<endl;
}

long Euclid(long z,long k,long& v)
{
	long a[3]={1,0,z},b[3]={0,1,k},t[3],q;
	int i;
	while (1)
	{
		if (b[2]==0)
		{
			v=b[2];
			return a[2];
		}
		if (b[2]==1)
		{
			if (b[1]<0)
				b[1]+=z;
			v=b[1];
			return b[2];
		}
		q=a[2]/b[2];
		for (i=0;i<3;i++)
		{
			t[i]=a[i]-q*b[i];
			a[i]=b[i];
			b[i]=t[i];
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -