Skip to content
Snippets Groups Projects
Select Git revision
  • bf4583cd77ebacd8ad01cbc3dd6ee2bef1f8b024
  • master default protected
  • radhwan.hassine-master-patch-03421
  • radhwan.hassine-master-patch-79254
4 results

eratosthene_refactored.c

Blame
  • Forked from algorithmique / cours
    Source project has a limited visibility.
    eratosthene_refactored.c 997 B
    #include <stdio.h>
    #include <stdbool.h>
    
    void init(int n,bool tab[n],bool val);
    void tracer_multiples(int n,bool tab[n],int i);
    void garder_nb1er(int n,bool tab[n]);
    void print_nb1er(int n,bool tab[n]);
    
    void main() {
       int size;
       printf("size = ");
       scanf("%d",&size);
       bool tab[size];
       init(size,tab,true);
       garder_nb1er(size,tab);
       printf("Nombres 1er < %d:",size);
       print_nb1er(size,tab);
    }
    
    void init(int n,bool tab[n],bool val) {
       for (int i=0;i<n;i++) {
          tab[i] = true;  
       }
    }
    
    void tracer_multiples(int n,bool tab[n],int i) {
       int j = i;
       while (true) {
          j += i;
          if (j >= n) {
             break;
          }
          if (tab[j]) {
             tab[j] = false;
          }
       } 
    }
    
    void garder_nb1er(int n,bool tab[n]) {
       for (int i=2;i<n;i++) {
          if (tab[i]) {
              tracer_multiples(n,tab,i);
          } 
       }
    }
    
    void print_nb1er(int n,bool tab[n]) {
       for (int i=2;i<n;i++) {
          if (tab[i]) {
             printf("%d ",i);
          }
       }
       printf("\n");
    }