#include#include#include//将十进制数转换成二进制,用于检验大素数 p 和 qint zhuan_huan(int b,int a[],int k){int t,temp=-1;while(b>0){t=b%2;temp++;a[temp]=t;b=b/2;}return temp;}//欧几里得算法,用于推断加密指数 e 是否符合要求int gcd(int n,int b){int r1=n,r2=b,r;while(r2>0){r=r1%r2;r1=r2;r2=r;}return r1;}//扩展欧几里得算法求乘法逆元,即求解密指数 dint extend(int n,int b){int q,r,r1=n,r2=b,t,t1=0,t2=1,i=1;while(r2>0){q=r1/r2;r=r1%r2;r1=r2; r2=r;t=t1-q*t2;t1=t2;t2=t;}if(t1>=0) return t1%n;else{while((t1+i*n)=0;i--){x=d;d=(d*d)%n;if((d==1)&&(x
=1)&&(x
=n-1))return 0;if(b[i]==1)d=(d*a)%n;}if(d
=1) return 0;elsereturn 1;}//快速计算模指数int js_mod(int a,int b,int n){int x=0,y=1,k,i,s[1000];k=zhuan_huan(b,s,1000);for(i=k;i>=0;i--){x=2*x;y=(y*y)%n;if(s[i]==1){x++;y=(y*a)%n;}}return y;}//主函数
void main(){int p,q,e,d,n,yn,m[1000