From ecfa610b47c875ee457a16c133a37dc615a90779 Mon Sep 17 00:00:00 2001 From: ngenyingondo <raphael.ngenyi@student.uclouvain.be> Date: Thu, 7 May 2020 11:51:08 +0200 Subject: [PATCH] =?UTF-8?q?Sp=C3=A9=20unit=5F64=20modpow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- run.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/run.c b/run.c index 5957b7c..2fbbfd4 100755 --- a/run.c +++ b/run.c @@ -43,10 +43,13 @@ queue_t *get_from_buffer_2(struct buffer_cw *buf){ // trouver un element int is_div(uint_64 number, uint_64 i) { // Vérifie si i est un diviseur de number. if (i == 0){return 0;} - + return (number % i == 0) ; // renvoie 0 si le nombre n'est pas divisible par i et 1 si il est divisible } +/* +exponentiation modulaire : calcul plus rapidement des grandes puissances entières +*/ uint_64 modpow (uint_64 base, uint_64 exp, uint_64 mod){ uint_64 result = 1; @@ -59,7 +62,7 @@ uint_64 modpow (uint_64 base, uint_64 exp, uint_64 mod){ exp >>= 1; base = (base * base) % mod; } - return result; + return result; } uint_64* randomiser (int k, uint_64 N){ @@ -72,11 +75,11 @@ uint_64* randomiser (int k, uint_64 N){ result[i] = rand() % (N-1) +1; } return result; - + } int is_prime (uint_64 number){ - + uint_64 *random; int k; if (number <= 20){k = number-1;} @@ -85,18 +88,18 @@ int is_prime (uint_64 number){ for (int i = 0; i < k; i++) { if (modpow(random[i],number-1,number) == 1) - { + { continue; } else{ free(random); return 0; } - + } free(random); return 1; - + } void enqueue(queue_t* q, uint_64 val){ @@ -241,7 +244,7 @@ void *calculating(void *param){ sem_post(&full2); free(chaine); } - + } return NULL; -- GitLab