1.

/**
* Angewandte Mathematik, SS11
* Problem: 10699 Count the factors
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=23&page=show_problem&problem=2113
*
* @author Peter Weismann
* @author Pirmin Schneider
* @version 1.0, 05/03/2011
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.176
*/

import java.util.Scanner;
public class Main {
// Statische Variablen, die nur einmal initialisiert werden und öfter benutzt werden
static int i;
static int j;
static boolean[] isPrime = new boolean[1000001];
static int numberOfPrimes = 0;

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// value ist der eingegebene Wert
int value = input.nextInt();
int primeFactors = 0;
int tmp;
// Generiert Primzahlen bis zu 1.000.000
primeGen();

while (value != 0) {

tmp = value;
primeFactors = 0;

// Eingegebene Zahl wird durch Primzahlen geteilt
for (i = 2; i < tmp; i++) {
// Wenn die eingegebene Zahl eine Primzahl ist, gibt es nur einen Faktor
// und zwar sich selbst
if (isPrime(tmp)) {
primeFactors++;
break;
}
// Wenn i eine Primzahl ist, wird durch diese geteilt
if (isPrime(i)) {
if (tmp % i == 0)
primeFactors++;
// Sollte der der Faktor mehrmals enthalten sein, wird er rausdividiert
while (tmp % i == 0 ) {
tmp = tmp / i;
}
}
}

// Ausgabe / Einlesen neuer Werte
System.out.println(value + " : " + primeFactors);
value = input.nextInt();

}

}

// Primzahlen bis 1.000.000 werden gesucht
public static void primeGen() {

isPrime[1] = true;
int upperBoundSquareRoot = (int)Math.sqrt(1000000);

for (i = 2; i <= upperBoundSquareRoot; i++) {
if (!(isPrime[i])) {
for (j = i * i; j <= 1000000; j += i)
isPrime[j] = true;
}
}
}

// Gibt zurueck, ob eine Zahl eine Primzahl ist
public static boolean isPrime(int value) {
if (!(isPrime[value]))
return true;
else
return false;
}
}

2.

/**
* Angewandte Mathematik, SS11
* Problem: 10699 Count the factors
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=1640
*
* @author Weber Christian
* @author Waldleitner Christoph
* @author Wolff Marco
* @version 1.0, 3/29/2011
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.172
*/

import java.util.Scanner;
import java.util.ArrayList;


public class CountTheFactors
{
public static void main(String[] args)
{
ArrayList<Integer> prim = new ArrayList<Integer>();
Scanner scan = new Scanner(System.in);
do{
prim.clear();
int number = scan.nextInt();
int start = number;
if(number == 0)
{
return;
}

if(number%2==0)
{
number/=2;
prim.add(2);
while(number%2==0)
{
number/=2;
}
}

for(int i=3;i<=number;i+=2)
{
if(number%i == 0)
{
number/=i;
prim.add(i);
while(number%i==0)
{
number/=i;
}
}
}
System.out.println(start + " : " +prim.size());
}while(true);
}
}



-----------------------------------------------------------------------

1.

/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, WS10/11
* Problem: 10699 Count the factors
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&page=show_problem&problem=1640
*
* @author Patrick Bédat
* @version 1.0, 10/26/2010
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.148
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class Main
{

public static void main(String... args) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

StringTokenizer st = new StringTokenizer(reader.readLine());

int n = Integer.parseInt(st.nextToken());

while (n != 0)
{
System.out.printf("%d : %d%n",n,countDistinctPrimeFactors(n));
st = new StringTokenizer(reader.readLine());
n = Integer.parseInt(st.nextToken());
}
}

private static int countDistinctPrimeFactors(int n)
{
Set<Integer> primeFactors = new HashSet<Integer>();

for (int i = 2; n > 1; i++)
while (n % i == 0)
{
primeFactors.add(i);
n /= i;
}
return primeFactors.size();
}
}

2.


/

/**

* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10

* Problem: 10699 - Count the factors

* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=1640

* @author Viktoriya Ryabova

* @version 1.0, 05/02/2010

*

* Method : Ad-Hoc

* Status : accepted

* Runtime: 1.088

*/

import java.util.Scanner;

 

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner (System.in);

while(sc.hasNext()){

//einlesen einer Zahl von der Konsole

long number = sc.nextLong();

//beim null wird eingabe terminated

if(number<=1000000&&number!=0){

int j=0;

//berechnen primzzalen unter zahlfaktoren

for (int i=2; i<= number; i++){

if(number%i==0&&isPrime(i)){

j++;

}

}

System.out.println(number + " : "+j);

}

}

}

//überprüfen, ob zahl eine primzahl ist

public static boolean isPrime(long n) {

if (n < 2) {

return false;

}

else if (n == 2) {

return true;

}

else if (n % 2 == 0) {

return false;

}

else {

for (int i=3; i*i<=n; i+=2) {

if (n%i==0) {

return false;

}

}

return true;

}

}

}