[Java] Factorial suma dígitos

Iniciado por hackmin, Febrero 28, 2015, 02:40:32 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 28, 2015, 02:40:32 PM Ultima modificación: Marzo 07, 2015, 03:28:22 PM por Expermicid
n ! significa n × ( n - 1) × ... × 3 × 2 × 1

Por ejemplo, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3.628.800,
y la suma de los dígitos en el número 10! es 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

Encuentra la suma de los dígitos en el número 100!


Código: java
import java.math.BigInteger;
public class prueba
{
public static void main(String[] args) {
int valor = 1;
BigInteger b1 = new BigInteger("1");
int NumeroFin = 0;
int FinalNumero = 0;
String NumeroFinCadena = "";
long fin = 100;
BigInteger Sumatorio = new BigInteger("1");
BigInteger Contador = new BigInteger("1");
for(int i = 1; i <= fin;i++){
b1 = b1.multiply(Sumatorio);
Sumatorio = Sumatorio.add(Contador);
if(i == fin){
System.out.println(b1);
NumeroFinCadena = String.valueOf(b1);
FinalNumero =NumeroFinCadena.length();

}

}
BigInteger b2 = new BigInteger("1"); 
BigInteger Multiplicador = new BigInteger("10");
int Compara = 0;
Compara = b1.compareTo(b2);
for(int i = 0 ; i <= fin;i++){
for(int x = 0; x <= fin*500;x++){
Compara = b1.compareTo(b2);
if(Compara == 1){

b2 = b2.multiply(Multiplicador);
}
Compara = b1.compareTo(b2);
if(Compara == -1){
b2 = b2.divide(Multiplicador);
}
}
System.out.println(b2);
i = (int)fin +1;
}

BigInteger bDivide = new BigInteger("10");
long GuardarAnterior = 0;
long ResultadoEntero = 0;
for(int i = 0; i < FinalNumero;i++){
BigInteger Resul = b1.divide(b2);
    Resul = Resul.mod(bDivide);
    b2 = b2.divide(bDivide);
ResultadoEntero = Resul.longValue();
GuardarAnterior = ResultadoEntero + GuardarAnterior;
}

System.out.println(GuardarAnterior);
}

}


Bueno, cualquier duda, dímelo 8)

Creo que en tu código te complicas mucho la vida. Además de estar ilegible sucio.
Procura darle una mirada a las convenciones del lenguaje, qué dice sobre identación, nombre de variables, nombres de clases, etc.

Te dejo mi código para que tengas una idea.

Código: java

import java.math.BigInteger;

public class SumaFactorial {

    public static void main(String args[]){
   
        int numero = 100;
       
        BigInteger factorial = calcularFactorial(numero);
        int suma = sumarDigitos(factorial);

        System.out.println(suma);
    }

    static BigInteger calcularFactorial(int numero){
        if (numero == 1)
            return new BigInteger("1");
        return new BigInteger("" + numero).multiply(calcularFactorial(numero-1));
    }

    static int sumarDigitos(BigInteger numero){
        int suma = 0;

        for (Character c : numero.toString().toCharArray())
            suma += Integer.parseInt("" + c);   
       
        return suma;
    }

}



¡< blozzter >!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Creo que en tu código te complicas mucho la vida. Además de estar ilegible sucio.
Procura darle una mirada a las convenciones del lenguaje, qué dice sobre identación, nombre de variables, nombres de clases, etc.

Te dejo mi código para que tengas una idea.

Código: java

import java.math.BigInteger;

public class SumaFactorial {

    public static void main(String args[]){
   
        int numero = 100;
       
        BigInteger factorial = calcularFactorial(numero);
        int suma = sumarDigitos(factorial);

        System.out.println(suma);
    }

    static BigInteger calcularFactorial(int numero){
        if (numero == 1)
            return new BigInteger("1");
        return new BigInteger("" + numero).multiply(calcularFactorial(numero-1));
    }

    static int sumarDigitos(BigInteger numero){
        int suma = 0;

        for (Character c : numero.toString().toCharArray())
            suma += Integer.parseInt("" + c);   
       
        return suma;
    }

}

xD como que hace 1 semana empece a programar, yo lo veo bien,este si que lo veo bien ¿Cuanto llevas tu?

Creo que es normal