[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 00:09:17 CEST 2012


Hola a todos:

Estoy intentando obtener el resto de la división de dos números
enteros grandes, las funciones que he definido las pongo a
continuación.
También he realizado algunas pruebas y no entiendo porqué en algunos
casos el resto me sale negativo, cuando debería ser positivo.
He probado a utilizar las funciones round() y floor() y los resultados
son los mismo.
Cualquier pista será bien recibida.

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);
}

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;
}
-- 
José Luis Torre
ww.ehu.es




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