APOKLIPTICO
Desconectado
Mensajes: 877
Don't talk to me if you ain't got the answer
|
Buen dia gente, ayer estaba aburrido y dije, voy a tratar de colgar mi compu haciendole calcular el factorial exponencial de un numero.
Esa funcion es en pseudo algo asi:
numero = 0
for(i = 0; i < limite; i++) numero = i ^ numero next
Siendo limite un numero natural o 0.
La funcion devolveria estos resultados: Func(0) = 0 Func(1) = 1 Func(2) = 2 Func(3) = 9 Func(4) = 262144 Func(5) = 6.206069878660874 × 10 ^ 183230
Como ven es una funcion que necesita numeros grandes... El tema es que no se como hacer para manejar numeros mas grandes que 64 bits, ya que el factorial exponencial de 5 necesitaria aproximadamente 91615 bits para almacenarlo.
Alguna idea de como puedo hacerlo? me gustaria no tener que usar una libreria externa, pero si no hay otra posibilidad, como la uso?
Gracias.
|
|
|
|
|
En línea
|
Y = (100/(100+(x-Pi/2)^8)) * (2-sin(7*x)-cos(30*x)/2)
Aprendiendo: RFI: 10% XSS: 70% Exploits: 60% Hack Wireless: 40% Troyanos y Virus: 70% Encriptacion y Cifrados: 40% Windows: 90% Linux: 40% VB: 75% C++: 30% ASM: 15% Batch: 90% Java: 15% Perl: 10% Redes: 45% Software: 70% Hardware y OC: 60% Guitarra: 25%
|
|
|
dooque
Desconectado
Mensajes: 68
|
taria bueno saber como hace "python" con los valores de tipo "Long" q es lo q estas buscando! en ese lenguaje no tenderias drama (me refiero al los valores no al tiempo de calculo jeje) si logro encontrar por ahi como hace python para manejar la memoria de este tipo de datos te cuento con gusto! hasta entonces...
saludos!!
|
|
|
|
|
En línea
|
|
|
|
|
ghastlyX
|
En C/C++ hay librerías externas para trabajar con números grandes. Hace unos meses a mi me surgió la necesidad de trabajar con números grandes e hice unas cuantas funciones para las operaciones que necesitaba, utilizando vectores donde cada casilla corresponde a cada uno de los dígitos del número que manejamos. Un saludo de ghastlyX 
|
|
|
|
|
En línea
|
|
|
|
TheMaker
Desconectado
Mensajes: 290
|
unsigned lon long int, con ese tiene numeros positivos para parar un tren, en algunos compiladores hay k incluir limits.h totalmente standar
|
|
|
|
|
En línea
|
|
|
|
TheMaker
Desconectado
Mensajes: 290
|
tienes exactemente hasta el +18,446,744,073,709,551,615 con eso tendras suficiente??? por cierto yo ese número no se ni leerlo xD 18 millones de billones??? XDD
|
|
|
|
|
En línea
|
|
|
|
|
ghastlyX
|
Lo que yo hablaba era de utilizar números de 200 ó 300 dígitos, para lo cual eso no sirve para nada, lo utilicé para un método criptógrafico que implementé tipo RSA en cuanto a números grandes. Un saludo de ghastlyX 
|
|
|
|
|
En línea
|
|
|
|
neo007
Desconectado
Mensajes: 81
|
como dice ghastlyX lo mejor es utilizr un vector donde cada posicion sea un digito.... aunque necesitarias un vector del de 183230  así que creo que será mejor dejarlo así  ya que el unsigned lon long int que menciona TheMaker solo tiene 20 posiciones 
|
|
|
|
|
En línea
|
|
|
|
winfuck
Desconectado
Mensajes: 254
|
|
|
|
|
|
En línea
|
|_|0|_| |_|_|0| |0|0|0|
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 877
Don't talk to me if you ain't got the answer
|
Veo que lo unico que me queda es armar las funciones con el array de numeros... No me podrian poner las funciones asi no me las tengo que hacer devuelta?? plzzzz  Thanks guys...
|
|
|
|
|
En línea
|
Y = (100/(100+(x-Pi/2)^8)) * (2-sin(7*x)-cos(30*x)/2)
Aprendiendo: RFI: 10% XSS: 70% Exploits: 60% Hack Wireless: 40% Troyanos y Virus: 70% Encriptacion y Cifrados: 40% Windows: 90% Linux: 40% VB: 75% C++: 30% ASM: 15% Batch: 90% Java: 15% Perl: 10% Redes: 45% Software: 70% Hardware y OC: 60% Guitarra: 25%
|
|
|
winfuck
Desconectado
Mensajes: 254
|
Veo que lo unico que me queda es armar las funciones con el array de numeros...
que acaso no sabes leer? OMG! cya
|
|
|
|
|
En línea
|
|_|0|_| |_|_|0| |0|0|0|
|
|
|
Carloswaldo
Wiki
Desconectado
Mensajes: 2.615
No me gustan los pollos.... OWNED!!!
|
Es la unica forma que hay sin depender de una librería externa. Por eso lo dijo.
|
|
|
|
|
En línea
|
|
|
|
winfuck
Desconectado
Mensajes: 254
|
cierto, pero me gustaria saber porque a el le gustaria no usar una libreria, cualquiera sea su razon si le interesa podria leer el fuente de esa libreria para ver como es que lo hace y de alli sacar el conocimiento necesario para hacer su propia implementacion. PD: No reinventes la rueda hijo, en todo caso, estudia y entiende su funcionamiento para ayudar a mejorarla  cya
|
|
|
|
|
En línea
|
|_|0|_| |_|_|0| |0|0|0|
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 877
Don't talk to me if you ain't got the answer
|
Es q me da paja... Bueno, de todas maneras, el factorial exponencial de 7 es un numero tan grande que solo en memoria ocuparia varias decenas de megas.... Asi q, bueno, gracias x el interes de todas maneras!!
|
|
|
|
|
En línea
|
Y = (100/(100+(x-Pi/2)^8)) * (2-sin(7*x)-cos(30*x)/2)
Aprendiendo: RFI: 10% XSS: 70% Exploits: 60% Hack Wireless: 40% Troyanos y Virus: 70% Encriptacion y Cifrados: 40% Windows: 90% Linux: 40% VB: 75% C++: 30% ASM: 15% Batch: 90% Java: 15% Perl: 10% Redes: 45% Software: 70% Hardware y OC: 60% Guitarra: 25%
|
|
|
Cab Calloway
Colaborador
Desconectado
Mensajes: 4.295
|
No lo creo... seguramente las librerías de las que hablan tienen funciones que trabajan con los números de una forma diferente a "números", lo mismo los tratan como vectores o a saber, el caso es que no creo que si usas una librería de las que te hablan, el número te ocupe "tantas megas".
|
|
|
|
|
En línea
|
Max 400; caracteres restantes: 366
|
|
|
winfuck
Desconectado
Mensajes: 254
|
Es q me da paja...
con esa actitud no llegaras a nada. Bueno, de todas maneras, el factorial exponencial de 7 es un numero tan grande que solo en memoria ocuparia varias decenas de megas.... Asi q, bueno, gracias x el interes de todas maneras!!
7! = 5040 pero te cuento que con la libreria GMP un programa que calcula el factorial de 100000 ocupa como maximo 3MB de memoria. cya
|
|
|
|
|
En línea
|
|_|0|_| |_|_|0| |0|0|0|
|
|
|
|