Voilà l'algo, fred sais tu tester sur ta machine pour voir les différences de performances ?
Code:
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <malloc.h> #define MAX 10000 int main (void) { int depart=2,i,divisible; int *resultat; int taille; resultat=(int *)malloc(1*sizeof(int)); resultat[0]=2; taille=1; depart++; while(depart<MAX) { i=0; divisible=0; while(resultat[i]<=sqrt((float)depart) && divisible==0) { if(depart%resultat[i]==0) { divisible=1; } i++; } if(!divisible) { taille++; resultat=(int *)realloc(resultat,taille*sizeof(int)); resultat[taille-1]=depart; } depart++; } for(i=0;i<taille;i++) printf("%d\n",resultat[i]); return(0); }
Commentaire