Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Java] Factorial suma dígitos

  • 2 Respuestas
  • 2198 Vistas

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

Desconectado hackmin

  • *
  • Underc0der
  • Mensajes: 67
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« 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
« Respuesta #1 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
« Respuesta #2 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

 

¿Te gustó el post? COMPARTILO!



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

Iniciado por graphixx

Respuestas: 3
Vistas: 3561
Ú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: 3903
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
[LIBRO] Programación avanzada en Java - Sonia Jaramillo Valbuena

Iniciado por graphixx

Respuestas: 5
Vistas: 8213
Último mensaje Enero 23, 2019, 07:14:41 pm
por jashin
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 9156
Ú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: 2096
Último mensaje Noviembre 02, 2014, 05:02:04 pm
por Expermicid