protected Reducibility getReducibilityRabin( int[] factors ) {
		int degree = (int) degree().longValue();
		for ( int i = 0; i < factors.length; i++ ) {
			int n_i = factors[i];
			Polynomial b = reduceExponent( i );
			Polynomial g = this.gcd( b );
			if ( g.compareTo( Polynomial.ONE ) != 0 ) return Reducibility.REDUCIBLE;
		}

		Polynomial g = reduceExponent( degree );
		if ( !g.isEmpty() ) return Reducibility.REDUCIBLE;

		return Reducibility.IRREDUCIBLE;
	}