Skip to content
Extraits de code Groupes Projets
Valider 1ca235b6 rédigé par EdouardParis's avatar EdouardParis
Parcourir les fichiers

Add question_5

parent 4415f0ea
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -5,27 +5,24 @@
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <gmpxx.h>
#include <cassert>
time_t algo_sqrt(mpz_class const& a, mpz_class & res)
void algo_sqrt(mpz_class const& a, mpz_class & res)
{
mpz_class r1 = a;
mpz_class r2 = a;
mpz_class r2 = a - 1;
struct timespec t0, t1;
clock_gettime( CLOCK_REALTIME, &t0);
while (r2 < r1) {
r2 = (r1 + (a / r1))/2;
while (r2 < r1 && r2 != 0) {
r1 = r2;
r2 = (r1 + (a / r1))/2;
}
res = r1;
clock_gettime( CLOCK_REALTIME, &t1);
time_t t_res = 1000.*(t1.tv_sec-t0.tv_sec) + (t1.tv_nsec-t0.tv_nsec)/1000000.;
return t_res;
if ((a - r2*r2) < 0) {
res = r2 - 1;
} else {
res = r2;
}
};
int main(int argc, char** argv) {
......@@ -34,10 +31,9 @@ int main(int argc, char** argv) {
mpz_class a(n);
mpz_class res;
time_t t;
t = algo_sqrt(a, res);
algo_sqrt(a, res);
std::cout << res << "\t" << t << std::endl;
std::cout << res << std::endl;
return 0;
}
/*Projet Edouard Paris 2016 - Arithmetique entière
*
* Question 3
* */
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <gmpxx.h>
#include <cassert>
time_t algo_sqrt(mpz_class const& a, mpz_class & res)
{
struct timespec t0, t1;
clock_gettime( CLOCK_REALTIME, &t0);
mpz_class r1 = a;
mpz_class r2 = a - 1;
while (r2 < r1 && r2 != 0) {
r1 = r2;
r2 = (r1 + (a / r1))/2;
}
if ((a - r2*r2) < 0) {
res = r2 - 1;
} else {
res = r2;
}
clock_gettime( CLOCK_REALTIME, &t1);
time_t t_res = 1000.*(t1.tv_sec-t0.tv_sec) + (t1.tv_nsec-t0.tv_nsec)/1000000.;
return t_res;
};
int main(int argc, char** argv) {
assert(argc == 2);
long n = strtol(argv[1], NULL, 10);
mpz_class a(n);
mpz_class res;
time_t t;
t = algo_sqrt(a, res);
std::cout << res << "\t" << t << std::endl;
return 0;
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter