public static boolean isPrime_v2 ( int num ){
		// tirival case
		if ( num == 1) {
			return true;
		}
		
		// non trivial case
		int		size  = (int)Math.sqrt(num) + 1;
		int[]	cache  =  new int[size];
		
		for (int i=2 ; i != cache.length ; ++i) {
			if ( cache[i] == 0 ) {
				if ( num % i == 0 ){
					return false;
				} else {
					crossOut(cache, i);
				}
			}
		}
		return true;
	}