[C con Clase] Obtener el resto de la división de dos números grandes

José Luis Torre joseluistorrehernandez en gmail.com
Jue Jul 12 12:52:38 CEST 2012


Hola Steven:

En primer lugar, muchas gracias por tu respuesta.

He probado con la función modf() y obtengo el mismo resultado.

No consigo entender porqué obtengo restos negativos, los restos
deberían estar en el intervalo [0, p-1]

Te paso el programa con los cambios que me has indicado, por
si quisieras ver los resultados que me sorpenden.

Saludos
José Luis

//  Obtener el resto de la división de dos números grandes

double resto(double num, double den);
double noesprimo(double p);
double cociente(double num, double den);

double noesprimo(double p)
{
	double a =11.0;
	
	return (resto(pow(a, p-1), p) !=1)  ;
}
double resto(double num, double den)
{
	return num - cociente(num, den)*den;
}

double cociente(double num, double den)
{
	// return round(num/den);
	// return floor(num/den);
	double div;
	double pEnt; // parte entera
	double pDec; // parte decimal
	
	div = num/den;
	
	pDec = modf(div, &pEnt);
	
	return pEnt;
}

int main()
{
    int p;
    double a = 11.0;
    double num;

    for (p=3; p<100; p+=2)
    {
        // printf("%d %lf\n", p, noesprimo((double)p));
        num = pow(a, p-1);
        printf("%2d\n%.0f\n%.0f\n%.0f\n%.0f\n%.0f\n=======================================\n",
              p,
              num,
              cociente(num, p),
              p*cociente(num, p),
              num - p*cociente(num, p),
              resto(num, p)
              );

    }
    system("pause");
    return 0;
}






El día 12 de julio de 2012 03:36, Steven Davidson <srd4121 en njit.edu> escribió:
> Hola a todos,
>
>
> On 7/11/2012 9:31 PM, Steven Davidson wrote:
>>
>> double fParteEntera, fParteDecimal;
>>
>> fParteEntera = modf( 1234.56789, &fParteDecimal );
>>
>
> Acabo de ver que cometí un error en el último mensaje acerca de 'modf()'.
> Debería ser esto,
>
> fParteDecimal = modf( 1234.56789, &fParteEntera );
>
> Y así obtenemos,
>
> fParteEntera <-- 1234.0
> fParteDecimal <-- 0.56789
>
>
> Disculpad la posible confusión por mi parte.
>
>
> Steven
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ



-- 
José Luis Torre
ww.ehu.es




Más información sobre la lista de distribución Cconclase