[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 >!

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
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