[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