- #include <iostream>
- #include <cmath>
- using namespace std;
- int gcd(int a, int b) {
- if (a == 0)
- return b;
- return gcd(b % a, a);
- }
- int modInverse(int a, int m) {
- a = a % m;
- for (int x = 1; x < m; x++)
- if ((a * x) % m == 1)
- return x;
- return 1;
- }
- int main() {
- int p, q;
- cout << "Enter prime numbers p and q: ";
- cin >> p >> q;
- int n = p * q;
- int phi = (p-1) * (q-1);
- int e;
- for (e = 2; e < phi; e++) {
- if (gcd(e, phi) == 1)
- break;
- }
- int d = modInverse(e, phi);
- cout << "Public key: (" << e << ", " << n << ")" << endl;
- cout << "Private key: (" << d << ", " << n << ")" << endl;
- return 0;
- }
