Java - No obtiene todos los numeros

 
Vista:
sin imagen de perfil

No obtiene todos los numeros

Publicado por Christian (1 intervención) el 01/04/2017 04:25:28
Buenas, un gusto, soy nuevo en el foro dado que tengo una duda sobre mi código en java, el planteamiento es el siguiente y esta en inglés, espero lo entiendan. This is very simple problem, you only have to display the prime factorization of nCr. For
example: 10C5 = 252 = 2 * 2 * 3 * 3 * 7
Input:
This is multiple test case problem. Input is terminated by end of file.
Each line contains one test case and it contains two positive numbers n and r.
(2 ≤ n ≤ 3000 && 1 ≤ r ≤ n-1).

Bueno ese es el planteamiento, tengo mi codigo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.Scanner;
public class Main {
	public static int fact(int num) //funcion para sacar el factorial de un numero entero positivo
    {
        int fact=1, i;
        for(i=1; i<=num; i++)
        {
            fact = fact*i;
        }
        return fact;
    }
	public static void main(String args[]){ // declaracion de las dos variables que seran los numeros ingresados por pantalla 
		int var1 = 0;
		int var2 = 0;
		Scanner sc = new Scanner(System.in);
		int var01 = sc.nextInt();
		int var02 = sc.nextInt();
        int resultado = (fact(var01)/(fact(var01-var02)*fact(var02))); //calculo de combinacion de las variables ingresadas por pantalla
        for (int i=2;i<=(resultado);i++){ // calculo de factores primos 
        	int contador=0;
        	while (resultado % i == 0) {
                resultado /= i;
                contador++;
            }
            if (contador != 0) { 	// entrega por pantalla de factores primos 
            	for (int j = contador;j>0;j--){
            		System.out.print(i);
            		if (resultado !=1){
            			System.out.print("*");
            		}
            	}
        }
      }
	}
}


Tengo dudas porque al ingresar los 2 números no me los toma todos y tiene que hacerlo dado que eso pide el enunciado. Bueno, espero alguna ayuda y se los agradecería mucho. Gracias de antemano y saludos :).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

No obtiene todos los numeros

Publicado por Andrés (340 intervenciones) el 10/04/2017 17:43:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import java.util.ArrayList;
import java.util.List;
 
/**
 *
 * @author andreas
 */
public class Combinacion {
 
    //Método iterativo para obtener el factorial de un número
    private long factorial(int numero) {
 
        long fact = 1;
 
        for (int i = 1; i <= numero; i++) {
 
            fact = fact * i;
 
        }
 
        return fact;
 
    }
 
    //Método que calcula nCr
    public long calculaCombinaciones(int n, int r) {
 
        long nFactorial = factorial(n);
        long rFactorial = factorial(r);
        long nMenosRFactorial = factorial(n - r);
 
        return nFactorial / (rFactorial * nMenosRFactorial);
 
    }
 
    //Método que calcula si un número es primo
    public boolean esPrimo(long numero) {
 
        long limite = (long) Math.sqrt(numero);
 
        for (long i = 2; i < limite; i++) {
 
            if (0 == numero % i) {
                return false;
            }
 
        }
 
        return true;
 
    }
 
    //Método que calcula los factores primos de un número
    public List<Long> calcularFactorizacion(long numero) {
 
        //Si el número es primo return null;
        if (esPrimo(numero)) {
 
            return null;
 
        }
 
        long tmpNumber = numero;
        List<Long> factores = new ArrayList<Long>();
 
        long w = 2;
 
        while (w <= tmpNumber) {
 
            if (esPrimo(w) && 0 == tmpNumber % w) {
 
                factores.add(w);
                tmpNumber /= w;
                w = 2;
 
            } else {
 
                w++;
            }
 
        }
 
        return factores;
 
    }
 
    public static void main(String[] args) {
 
        int n = 10;
        int r = 5;
 
        Combinacion combination = new Combinacion();
        long combinaciones = combination.calculaCombinaciones(n, r);
 
        StringBuilder sb = new StringBuilder();
 
        List<Long> factores = combination.calcularFactorizacion(combinaciones);
        for (Long l : factores) {
            sb.append(l).append("*");
        }
 
        System.out.println(n + "C" + "r = " + combinaciones + " = " + sb.substring(0, sb.length() - 1).toString());
 
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar