?? rsa.cpp
字號:
#include<iostream>
using namespace std;
//可使兩個數組具有相同的長度
const int len=4;
unsigned long b=0x10000;
unsigned long u[len];
unsigned long v[len];
unsigned long w[8];
void Add(unsigned long u[len],unsigned long v[len],unsigned long w[len+1]){
unsigned long k=0;
for(int j=len-1;j>=0;j--)
{
w[j+1]=(u[j]+v[j]+k)%b;
k=(u[j]+v[j]+k)/b;
}
w[0]=k;
cout<<"相加的結果:"<<endl;
for(j=0;j<len+1;j++)
cout<<hex<<w[j]<<" ";
cout<<endl;
}
void Sub(unsigned long u[len],unsigned long v[len],unsigned long w[len]){
int k=0;
for(int j=len-1;j>=0;j--)
{
w[j]=(u[j]-v[j]+k)%b;
k=(u[j]-v[j]+k)/b;
}
cout<<"相減的結果:"<<endl;
for(j=0;j<len;j++)
cout<<hex<<w[j]<<" ";
cout<<endl;
}
void Mul(unsigned long u[len],unsigned long v[len],unsigned long w[2*len]){
unsigned long k=0;
for(int m=2*len-1;m>=len;m--)
w[m]=0;
for(int j=len-1;j>=0;j--){
if(v[j]==0)
w[j]=0;
else
for(int i=len-1;i>=0;i--){
unsigned long t;
t=u[i]*v[j]+w[i+j+1]+k;
w[i+j+1]=t%b;
k=t/b;
if(i==0)
w[j]=k;
}
}
cout<<"相乘的結果:"<<endl;
for(int n=0;n<=2*len-1;n++)
cout<<hex<<w[n]<<" ";
cout<<endl;
}
void Div(unsigned long g[len+1],unsigned long c[len],unsigned long q[len+1],unsigned long r[len]){
unsigned long d;
unsigned long p;
unsigned long t;
unsigned long k=0;
unsigned long c1[len+1]={0,c[len]};
unsigned long g1[2*len]={0,g[2*len+1]};
d=b/(c[0]+1);
cout<<"d="<<d<<endl;
for(int i=len;i>=0;i--)
{
t=g[i]*d+k;
g[i+1]=t%b;
k=t/b;
if(i==0)
g[i]=k;
}
k=0;
for( i=len-1;i>=0;i--)
{
t=c[i]*d+k;
c[i]=t%b;
k=t/b;
}
for(int j=0;j<1;j++)
if(g[j]==c[0])
p=b-1;
else
p=(g[j]*b+g[j+1])/c[0];
if((c[1]*p)>((g[j]*b+g[j+1]-p*c[0])*b+g[j+2]))
p=p-1;
for(int l=len;l>=0;l--){
t=p*c[l]+k;
c1[l+1]=t%b;
k=t/b;
if(l==0)
c1[l]=k;
}
for(i=0;i<=len;i++)
cout<<c1[i]<<" ";
cout<<endl;
q[j]=p;
if(g[j+l]<0)
q[j]-=1;
g[j+l]=g[j+l]+c[len+1];
cout<<hex<<q[j];
}
void main(){
unsigned long q[3];
unsigned long r[2];
cout<<"輸入第一個大數:";
for(int i=0;i<len;i++)
cin>>hex>>u[i];
cout<<"輸入第二個大數:";
for(int j=0;j<len;j++)
cin>>hex>>v[j];
Add(u,v,w);
Sub(u,v,w);
Mul(u,v,w);
Div(u,v,q,r);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -