Factorial de grandes números en Java

/* Cálculo del factorial con enteros ‘long’ (válido hasta n=20), cálculo del factorial para números grandes (BigInteger) con límite la memoria del sistema (por ejemplo, con n=50000 hace el cálculo) y comparación con el límite que tienen los reales ‘double’ (n=170), y para acabar verificación de si un número entero es capicúa o no */

package numeros;

import java.math.BigInteger;
import java.util.Scanner;

/*
* @author RLR
*/

public class Numeros
{
/**
* @param args the command line arguments
*/

public static void main(String[] args)
{
// TODO code application logic here

Scanner sc=new Scanner(System.in);

System.out.println(“Dame un numero<20: “);
long num=sc.nextLong();
System.out.print(“Su factorial es: ” + fact(num) + “\n\n”);

System.out.println(“Dame ahora un numero grande: “);
BigInteger numero= new BigInteger(sc.next());
numero=fact(numero);
System.out.print(“Su factorial es: ” + numero + ‘\n’);
double numero1=numero.doubleValue();
System.out.print(“Su factorial es: ” + numero1 + “\n\n”);

System.out.println(“Dame un numero entero positivo: “);
long num1=sc.nextLong();
if(capicua(num1))
System.out.print(“Este numero SI es capicua.\n”);
else
System.out.print(“Este numero NO es capicua.\n”);

System.out.println(“\n\nPulsa Tecla+Return para acabar.\n”);
String FIN=sc.next();
}

public static long fact(long num)
{
long res=1;

for(int i=1;i<=num;i++) res *= i;
return res;
}

public static BigInteger fact(BigInteger num)
{
BigInteger res=new BigInteger(“1”);
long num1=num.longValue();

for(long i=1;i<=num1;i++) res=res.multiply(BigInteger.valueOf(i));
return res;
}

public static boolean capicua(long num)
{
long res=0,num1=num;

while(num1>0)
{
res = res*10 + num1%10;
num1 = num1/10;
}
return (num==res);
}

}

Esta entrada fue publicada en Ciencia y programación. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s