[Java] Factorial suma dígitos

  • 2 Respuestas
  • 2636 Vistas

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

Desconectado hackmin

  • *
  • Underc0der
  • Mensajes: 67
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

[Java] Factorial suma dígitos

  • en: Febrero 28, 2015, 02:40:32 pm
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
  1. import java.math.BigInteger;
  2. public class prueba
  3. {
  4.    public static void main(String[] args) {
  5.       int valor = 1;
  6.       BigInteger b1 = new BigInteger("1");
  7.    int NumeroFin = 0;
  8.    int FinalNumero = 0;
  9.    String NumeroFinCadena = "";
  10.       long fin = 100;
  11.    BigInteger Sumatorio = new BigInteger("1");
  12.    BigInteger Contador = new BigInteger("1");
  13.    for(int i = 1; i <= fin;i++){
  14.    b1 = b1.multiply(Sumatorio);
  15.    Sumatorio = Sumatorio.add(Contador);
  16.    if(i == fin){
  17.    System.out.println(b1);
  18.    NumeroFinCadena = String.valueOf(b1);
  19.    FinalNumero =NumeroFinCadena.length();
  20.    
  21.    }
  22.    
  23.    }
  24.    BigInteger b2 = new BigInteger("1");  
  25.    BigInteger Multiplicador = new BigInteger("10");
  26.    int Compara = 0;
  27.    Compara = b1.compareTo(b2);
  28.    for(int i = 0 ; i <= fin;i++){
  29.       for(int x = 0; x <= fin*500;x++){
  30.          Compara = b1.compareTo(b2);
  31.          if(Compara == 1){
  32.            
  33.             b2 = b2.multiply(Multiplicador);  
  34.          }
  35.          Compara = b1.compareTo(b2);
  36.          if(Compara == -1){
  37.             b2 = b2.divide(Multiplicador);
  38.          }
  39.       }
  40.       System.out.println(b2);
  41.       i = (int)fin +1;
  42.    }
  43.    
  44.    BigInteger bDivide = new BigInteger("10");  
  45.    long GuardarAnterior = 0;
  46.    long ResultadoEntero = 0;
  47.    for(int i = 0; i < FinalNumero;i++){
  48.    BigInteger Resul = b1.divide(b2);
  49.     Resul = Resul.mod(bDivide);
  50.     b2 = b2.divide(bDivide);
  51.    ResultadoEntero = Resul.longValue();
  52.    GuardarAnterior = ResultadoEntero + GuardarAnterior;
  53.    }
  54.    
  55.    System.out.println(GuardarAnterior);
  56.       }
  57.  
  58.    }
  59.  

Bueno, cualquier duda, dímelo 8)
« Última modificación: Marzo 07, 2015, 03:28:22 pm por Expermicid »

Desconectado blozzter

  • *
  • Underc0der
  • Mensajes: 106
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • blozzter-blz

Re:[Java]Factorial suma dígitos

  • en: Febrero 28, 2015, 03:21:28 pm
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
  1. import java.math.BigInteger;
  2.  
  3. public class SumaFactorial {
  4.  
  5.     public static void main(String args[]){
  6.    
  7.         int numero = 100;
  8.        
  9.         BigInteger factorial = calcularFactorial(numero);
  10.         int suma = sumarDigitos(factorial);
  11.  
  12.         System.out.println(suma);
  13.     }
  14.  
  15.     static BigInteger calcularFactorial(int numero){
  16.         if (numero == 1)
  17.             return new BigInteger("1");
  18.         return new BigInteger("" + numero).multiply(calcularFactorial(numero-1));
  19.     }
  20.  
  21.     static int sumarDigitos(BigInteger numero){
  22.         int suma = 0;
  23.  
  24.         for (Character c : numero.toString().toCharArray())
  25.             suma += Integer.parseInt("" + c);    
  26.        
  27.         return suma;
  28.     }
  29.  
  30. }
  31.  


¡< blozzter >!

Desconectado hackmin

  • *
  • Underc0der
  • Mensajes: 67
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:[Java]Factorial suma dígitos

  • en: Febrero 28, 2015, 03:46:12 pm
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
  1. import java.math.BigInteger;
  2.  
  3. public class SumaFactorial {
  4.  
  5.     public static void main(String args[]){
  6.    
  7.         int numero = 100;
  8.        
  9.         BigInteger factorial = calcularFactorial(numero);
  10.         int suma = sumarDigitos(factorial);
  11.  
  12.         System.out.println(suma);
  13.     }
  14.  
  15.     static BigInteger calcularFactorial(int numero){
  16.         if (numero == 1)
  17.             return new BigInteger("1");
  18.         return new BigInteger("" + numero).multiply(calcularFactorial(numero-1));
  19.     }
  20.  
  21.     static int sumarDigitos(BigInteger numero){
  22.         int suma = 0;
  23.  
  24.         for (Character c : numero.toString().toCharArray())
  25.             suma += Integer.parseInt("" + c);    
  26.        
  27.         return suma;
  28.     }
  29.  
  30. }
  31.  
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

 

[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 3949
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 4249
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
Cheat-Sheet: JAVA - Hoja Guía para que no se me olvide

Iniciado por Denisse

Respuestas: 1
Vistas: 677
Último mensaje Julio 21, 2020, 12:43:49 pm
por DevCode
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 9860
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Sobreescritura y SobreCarga de Métodos en Java ( Overriding y Overloading )

Iniciado por Expermicid

Respuestas: 0
Vistas: 2217
Último mensaje Noviembre 02, 2014, 05:02:04 pm
por Expermicid