question: private BigInteger procedure_C ( BigInteger p , BigInteger q ) { BigInteger pSub1 = p . subtract ( ONE ) ; BigInteger pSub1DivQ = pSub1 . divide ( q ) ; int length = p . bitLength ( ) ; for ( ; ; ) { BigInteger d = new BigInteger ( length , init_random ) ; if ( d . compareTo ( ONE ) > 0 && d . compareTo ( pSub1 ) < 0 ) { BigInteger a = d . modPow ( pSub1DivQ , p ) ; if ( a . compareTo ( ONE ) != 0 ) { return a ; } } } }
target:  Procedure C procedure generates the a value from the given p,q, returning the a value.