Título: Resto de un numero natural de 200 digitos Publicado por: WHK en 23 Agosto 2016, 01:47 am Hola, alguien sabe de algún método para calcular el resto de un numero natural de 200 digitos?, he intentado con gmp pero no me da la longitud.
Saludos. Título: Re: Resto de un numero natural de 200 digitos Publicado por: + 1 Oculto(s) en 23 Agosto 2016, 01:51 am no entiendo muy bien, pero parece interesante tu pregunta
Título: Re: Resto de un numero natural de 200 digitos Publicado por: _TTFH_3500 en 23 Agosto 2016, 02:02 am Hola, alguien sabe de algún método para calcular el resto de un numero natural de 200 digitos?, he intentado con gmp pero no me da la longitud. Saludos. Creo que hay una manera mirando las ultimas cifras pero no estoy seguro de como, por ejemplo 758412364598471254368451126 MOD 2 = 0 ya que el ultimo digito ('6') es par. La gracia esta en que solo evaluas unos digitos en lugar de todo el número. Título: Re: Resto de un numero natural de 200 digitos Publicado por: + 1 Oculto(s) en 23 Agosto 2016, 02:05 am claro, hace un tiempo hice ese tipo de ejercicios, por aritmetica modular
https://es.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic https://es.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/congruence-modulo Título: Re: Resto de un numero natural de 200 digitos Publicado por: bengy en 23 Agosto 2016, 02:24 am epa programare haber si lo logro
Título: Re: Resto de un numero natural de 200 digitos Publicado por: WHK en 23 Agosto 2016, 03:37 am Lo he logrado con php BC Math xD
http://php.net/manual/en/book.bc.php Creo que gmp tiene un bug que no permite calcular la diferencia y resto de numeros mayores a 50 cifras, pero con bc math si pude :) http://php.net/manual/en/function.bcmod.php Título: Re: Resto de un numero natural de 200 digitos Publicado por: Eleкtro en 23 Agosto 2016, 04:05 am En .NET podrías haber utilizado la Class BigIntegers para realizar operaciones con números enteros:
Código
En el código te muestro ejemplos muy básicos, de parsing, de instanciación de la class, de la capacidad de utilización de operadores aritméticos convencionales (+/- Mod/C#: %), y la utilización de métodos aritméticos de la class. Saludos Título: Re: Resto de un numero natural de 200 digitos Publicado por: bengy en 23 Agosto 2016, 04:07 am pero biginteger internamente es String
Título: Re: Resto de un numero natural de 200 digitos Publicado por: Eleкtro en 23 Agosto 2016, 04:20 am pero biginteger internamente es String ...No, en absoluto. BigIntegers no trabaja internamente con Strings, sino mayormente con arrays del tipo Byte (byte[]) como se puede verificar en el código fuente de la class BigInteger y BigNumber:
Obviamente el método BigIntegers.ToString() representará el valor en formato de texto, pues esa es la finalidad de cualquier método que lleve por nombre "ToString", del mismo modo que el método BigIntegers.Parse tomará como parámetro un valor de texto para parsear, pero ese aspecto no tiene nada que ver con el funcionamiento interno del algoritmo, sino con una de las formas que se le facilita al usuario final (el programador) para utilizar la class y representarla. Aparte, el constructor de la class expone varios overloads que aceptan otros datatypes distintos a String, entre ellos los datatypes numéricos convencionales y un array de Byte. Saludos Título: Re: Resto de un numero natural de 200 digitos Publicado por: class_OpenGL en 23 Agosto 2016, 06:22 am Aquí dejo un programa que hice en C para un problema de Project Euler. El programa calcula la suma total de los dígitos de factorial de 200 (en realidad, el ejercicio pedía de 100, pero puse 200 para que tuviera más de 200 dígitos). En el programa, para obtener los dígitos, tengo que sacar el módulo, así que funciona correctamente (lo digo porque Project Euler dictaminó que mi respuesta era buena).
Código
Además, le he agregado para que imprima los dígitos en Little Endian, así que la salida del programa para calcular el factorial de 200 sería... Código: 00000000000000000000000000000000000000000000000002747379830732698722222987169785 |