add SCR Part
This commit is contained in:
44
SCR/SCR3.1/TP01/Exercise4/crible.c
Normal file
44
SCR/SCR3.1/TP01/Exercise4/crible.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
|
||||
void afficher(char* crible, int n) {
|
||||
for(int i = 0; i < n; i++) {
|
||||
if(crible[i]) printf("%d ", i);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void rayer_multiples(char* crible, int n, int k) {
|
||||
for(int i = 0; i < n; i++) {
|
||||
if(i % k == 0 && i != k) crible[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int n=1000;
|
||||
if(argc>1){
|
||||
n = (int)strtol(argv[1],NULL,0);
|
||||
assert( n > 0 );
|
||||
}
|
||||
|
||||
char* crible = (char*)mmap(NULL, n * sizeof(int), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0);
|
||||
assert(crible != MAP_FAILED);
|
||||
|
||||
for(int i=0; i<n; i++){
|
||||
crible[i] = 1;//par défaut: pas encore barré
|
||||
}
|
||||
|
||||
for(int k=2; k<n; k++){
|
||||
rayer_multiples(crible, n, k);
|
||||
}
|
||||
|
||||
afficher(crible, n);
|
||||
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user