Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: GGZ en 10 Septiembre 2015, 21:46 PM

Título: Mills' constant
Publicado por: GGZ en 10 Septiembre 2015, 21:46 PM
Buenas!

Defición - Wikipedia:
In number theory, Mills' constant is defined as the smallest positive real number A such that the floor of the double exponential function (https://upload.wikimedia.org/math/d/b/5/db55ca8016b648a85f8ac5ff7c5de531.png) is a prime number, for all positive integers n.

¿Cómo hago para que no desborde el tipo, cómo debo definirla?

#include <stdio.h>
#include <math.h>

int main (void){
   int n;
   int exponent;
   double mills=1.30637788386308069046861449260260571291678458515671364436805375996643405376682659;

   for (n=1; n<10; n++){
           exponent=pow(3,n);
           printf ("%f\n", pow(mills,exponent)  );
   }

return 0;}



A lo último me tira:
1.#INF00
1.#INF00


Usé la funcion floor pero el tema es que redondea mal y me tira números que no son primos.

Saludos!
Título: Re: Mills' constant
Publicado por: ivancea96 en 10 Septiembre 2015, 22:09 PM
floor() no redondea, simplemente saca el numero entero más cercano inferior (le quita los decimales).
ceil() hace al revés, coge el siguiente numero entero.
round() redondea.

double mills=1.30637788386308069046861449260260571291678458515671364436805375996643405376682659;

Puedes poner ese número si quieres, pero como el 80% de las cifras no las va a coger, tenlo en cuenta.
Título: Re: Mills' constant
Publicado por: GGZ en 10 Septiembre 2015, 22:24 PM
Bueno, está bien entonces porque necesito aplicar la función "piso" (por eso esta notación matemática (https://upload.wikimedia.org/math/d/b/5/db55ca8016b648a85f8ac5ff7c5de531.png) ) que es justamente floor, en teoría. Ceil sería la función "techo"

Pero mi pregunta es como hago para que calcule más números?

Podría transformarlo a un string y trabajarlo allí, es el mismo problema que cuando tenés que calcular la factorial de un número.

Esa es mi pregunta, ¿qué tipo debería usar ?

Saludos!
Título: Re: Mills' constant
Publicado por: engel lex en 10 Septiembre 2015, 22:41 PM
lo que buscas es hacer "calculos de precisión arbitraria", haciendola con string puede ser muy lento... es preferible que uses GMP

yo hice un post donde podía calcular pi a X cantidad de decimales (10mil decimales en 1 segundo)

http://foro.elhacker.net/buscador-t412338.0.html (http://foro.elhacker.net/buscador-t412338.0.html)

entre las primeras lineas está el link al otro post donde medio explico como montar GMP
Título: Re: Mills' constant
Publicado por: GGZ en 10 Septiembre 2015, 23:32 PM
Buenisimo!, eso era lo que buscaba!

Saludos!  ;D