Skip to content
Extraits de code Groupes Projets
Valider ecfa610b rédigé par Raphaël Ngenyi-Ngondo's avatar Raphaël Ngenyi-Ngondo
Parcourir les fichiers

Spé unit_64 modpow

parent d3ff1ba1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #8336 réussi
......@@ -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;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter