import java.lang.Exception;
import java.io.IOException;
import java.io.PrintStream;
class RSA{
private static long gcd(long m, long n)
{ while (n != 0)
{ long rem = m % n;
m = n;
n = rem;
}
return m;
}
public static void main (String args[]) throws java.lang.Exception
{ long p, q, e, d, n, phi_n;
p = Long.parseLong(args[0]);
q = Long.parseLong(args[1]);
e = Long.parseLong(args[2]);
n = p * q;
phi_n = (p - 1) * (q - 1);
d = (long)Math.pow( e, -1) % phi_n; // not correct at all, the (long) typecast truncates the decimal
System.out.println("p = " + p);
System.out.println("q = " + q);
System.out.println("e = " + e);
System.out.println("d = " + d);
System.out.println("n = " + n);
System.out.println("phi(n) = " + phi_n);
System.out.println("gcd(" + e +", " + phi_n +") = " + gcd(e, phi_n)); // value should be 1
} // end main
}// end class RSA