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

📄 未命名6.cpp

📁 rsa算法c语言实现 完整 有对话框
💻 CPP
字号:

#include <iostream.h>
#include <string.h>
#define max 100

int q[max];
int countq;
int f;

int gcd(int a, int b)
{
	if(b==0)
		return a;
	else
	{
		int r;
		r=a%b;
		a=b;
		b=r;
		return gcd(a,b);
	}
}

void B(int c[],int n)
{
	int i;
	cout<<"************"<<endl<<"??q[]:";
	for(i=2;i<=n;i++)
	{
		c[i]=(-1)*c[i-1]*q[i-2]+c[i-2];
		cout<<q[i-2]<<' ';
	}
	cout<<endl<<"??b[]:";
	for(i=0;i<=n;i++)
	{
		cout<<c[i]<<' ';		
		if(i==n)
		{
			if(c[i]<0)
			{
				c[i]=c[i]+f;
			}
			cout<<endl;
			cout<<"???:"<<c[i];
			cout<<endl;
			goto l;
		}
	}
l:;
}

void Euclid(int a,int d)
{
	int i;
	i=gcd(d,a);
	if(i!=1)
	{
		cout<<a<<"??"<<f<<"???"<<endl;
	}
	else
	{
		int c[max];
		int countc=0;
		countq=0;
		while(c[countc-1]!=1)
		{
			if(countq==0)
			{
				q[countq]=d/a;
				c[countc]=d%a;
				countq++;
				countc++;
			}
			else
				if(countq==1)
				{
					q[countq]=a/c[countc-1];
					c[countc]=a%c[countc-1];
					countq++;
					countc++;
				}
				else
				{
					q[countq]=c[countc-2]/c[countc-1];
					c[countc]=c[countc-2]%c[countc-1];
					countq++;
					countc++;
				}
		}
		int b[max];
		b[0]=0;
		b[1]=1;
		B(b,countq+1);
	}
}

int main(int argc, char* argv[])
{
	int a;
	cout<<"??????:"<<endl;
	cin>>a;
	cin>>f;
	Euclid(a,f);
	return 0;
}

⌨️ 快捷键说明

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