#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;

class RSA
{	private: 
		int p,q,n;
		int e,d;
		int m;
		int c;
		int fn;
		bool primetest(int m);        //素数检测
		int gcd(int a, int b);        //求解最大公约数
		int extend_euclid(int m, int bin); //扩展欧几里得算法
		int modular_multiplication(int a, int b, int n);   //快速模幂算法
		void int_to_binarr(int i, int binarr[]);  //十进制数组转换为二进制数组
		void order(int &a, int &b);   //排序
	public:
		RSA(int p, int q);
		bool intest;
		bool flag;
		void produce_key();         //生成密钥  
		void encrypt(int m);        //加密
		void decrypt(int c);        //解密
		int getn(){return n;}
		int gete(){return e;}
		int getd(){return d;}
		int getm(){return m;}
		int getc(){return c;}
};

