class Erastosthenes { public static void printAllPrimes(int N) { boolean Crossed[]; Crossed = new boolean[N+1]; // Init Crossed[] for(int i = 0; i < N+1; i++) { Crossed[i] = false; } // End for(i) for(int i = 2; i <= N; i++) { if(Crossed[i]) { continue; } System.out.println("\t" + i + " is prime"); for(int j = 2*i; j <= N; j += i) { Crossed[j] = true; } } // End for(i) } // End printAllPrimes() public static void printPrimeFactorCount(int N) { Counter[] numPrimeFactors; numPrimeFactors = new Counter[N+1]; // Init numPrimeFactors[] for(int i = 0; i < N+1; i++) { numPrimeFactors[i] = new Counter(); } // End for(i) for(int i = 2; i <= N; i++) { if(numPrimeFactors[i].getCurrentValue() > 0) { System.out.println(" " + i + " has " + numPrimeFactors[i].getCurrentValue() + " prime factors"); continue; } System.out.println(" " + i + " is prime"); for(int j = 2*i; j <= N; j += i) { numPrimeFactors[j].increment(); } } // End for(i) System.out.println("Length of numPrimeFactors is " + numPrimeFactors.length); } // End printPrimeFactorCount() public static void main(String[] args) { //printAllPrimes(100); int N = Integer.parseInt(args[0]); printPrimeFactorCount(N); System.out.println("Number of arguments is " + args.length); for(int i = 0; i < args.length; i++) { System.out.println("argument " + i + " is " + args[i]); } } // End main() } // End class Erastosthenes