Newer
Older
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
int is_div(int number, int i) { // Vérifie si i est un diviseur de number.
return (number % i == 0) ; // revoi 0 si le nombre n'est pas divisible par i et 1 si il est divisible
}
int is_prime(int number) { // Vérifie si number est un nombre premier. Return 1 si il est premier, 0 sinon
for (int i = 2 ; i < number ; i++) { //regarde les differents nombres pouvant etre diviser number
if (is_div(number,i) != 0) { // si i peut diviser number
return 0 ; //renvoi 0 => FAUX
}
}
return 1 ; //sinon => VRAI
}
int* prime_divs(int number){
int *ptr;
ptr = malloc(sizeof(int)*number);
ptr[0] = 0;
ptr[1] = 0;
int i;
for (i = 2; i < number; i++){
if (is_prime(i) == 1 && is_div(number, i)){
ptr[i] = i;
int *result;
result = malloc(sizeof(int)*len +sizeof(int));
int j =0;
for (int i = 0; ptr[i] != -1; i++)
{
if(ptr[i] != 0){
result[j] = ptr[i];
j++;
}
}
result[j] = -1;
}
void afficherListe(int* tab) { // afficher la liste
for (int i = 0; tab[i] != -1; i++)
{
if (tab[i] != 0){
printf("%d\n",tab[i]);
}
}
}
int run (char *input,char *output){
FILE *file1 = NULL;
FILE *file2 = NULL;
file1 = fopen(input,"r");
if (file1 == NULL){return -1;}
file2 = fopen(output,"w+");
if (file2 == NULL){
fclose(file1);
return -1;
}
int *pr_divs = prime_divs(atoi(chaine));
fprintf(file2,"%s ",chaine);
for (int i = 0; pr_divs[i] != -1; i++)
{
fprintf(file2,"%d ",pr_divs[i]);
}
fputc('\n',file2);
}
fclose(file1);
fclose(file2);
return 0;
}
/* int main() {
// test pour is_div(int number, int i)
int number = 10 ;
int number1 = 11 ;
int i = 3 ;
printf("%d\n",is_div(number,i)) ; // 1
printf("%d\n",is_div(number1,i)) ; // 0
// test pour is_prime(int number)
int number2 = 1498498411 ;
int number3 = 5 ;
int number4 = 14545144 ;
printf("%d\n",is_prime(number2)) ; // 0
printf("%d\n",is_prime(number3)) ; // 1
printf("%d\n",is_prime(number4)) ; // 0
//prime divis
afficherListe(prime_divs(number));
return 0;
} */