Skip to content
Extraits de code Groupes Projets
Valider 1071101e rédigé par Arnaud Lefebvre's avatar Arnaud Lefebvre
Parcourir les fichiers

Replace fonctions.c

parent 881f3066
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #10009 réussi
......@@ -2,6 +2,7 @@
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <stdint.h>
#include <pthread.h>
#include <semaphore.h>
......@@ -33,7 +34,7 @@ Ajoute un node_t à la fin d'une list_t
@my_list : la list_t a laquelle on va ajouter un node_t
@value : la valeur que contiendra le node_t
*/
void put_node_t(list_t *my_list, int value) {
void put_node_t(list_t *my_list, uint64_t value) {
node_t *new = malloc(sizeof(node_t));
if (!new) return;
new->next = NULL;
......@@ -73,7 +74,7 @@ Retire le premier node_t d'une list_t et renvoit son entier
@my_list : la list_t de laquelle on va retier le node_t pointé par first
@return : la valeur (int) que contenait le node_t retiré
*/
int get_node_t(list_t *my_list) {
uint64_t get_node_t(list_t *my_list) {
if (my_list->length == 0) return -1;
int value = my_list->first->value;
node_t *temp = my_list->first;
......@@ -120,23 +121,24 @@ Renvoie une list_t contenant un nombre suivi de ses diviseurs premiers
@value : le nombre (int) dont on veut trouver les diviseurs premiers
@return : une list_t contenant value dans le node_t pointé par first ainsi que ses diviseurs premiers
*/
list_t *prime_list(int value) {
list_t *prime_list(uint64_t value) {
list_t *prime = malloc(sizeof(list_t));
if (!prime) return NULL;
init_list_t(prime);
put_node_t(prime, value);
int in_node = 0;
int chiffre = value;
while (value % 2 == 0) {
if (2 != in_node) {
put_node_t(prime, 2);
in_node = 2;
uint64_t in_node = 0;
uint64_t chiffre = value;
uint64_t div = 2;
while (value % div == 0) {
if (div != in_node && value != div) {
put_node_t(prime, div);
in_node = div;
}
value = value/2;
value = value/div;
}
for (int i = 3; i*i <= value; i += 2) {
for (uint64_t i = 3; i*i <= value; i += 2) {
while (value % i == 0) {
if (i != in_node) {
put_node_t(prime, i);
......@@ -230,4 +232,17 @@ buffer2 *init_buffer_2(int nthreads) {
printf ("buffer_2 created.\n");
return buffer_2;
}
int count_lines(char *filename){
uint64_t number;
int lines = 0;
FILE *file = fopen(filename, "r");
while (fscanf(file, "%lu", &number) != EOF) {
lines++;
}
fclose(file);
return lines;
}
\ No newline at end of file
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