M
Membre supprimé 1
Invité
Bonjour j'ai fait le crible d'Eratosthène mais j'aurai voulu savoir si il y avait moyen de réduire la complexité de l'algo ? Je pense pas qu'il soit très optimisé :/
Existe-il par hasard une version récursive ?
Merci si vous pouvez m'aider
[cpp]#include <stdio.h>
#define N 100
void statique()
{int nbre=2, i, test=1, cpt=0;
printf("\n");
while ( nbre<=N )
{ for (i=2 ; i<nbre ; i++)
{ if (nbre % i == 0) { test = 0; }
}
if (test) { printf("%d\n", nbre); cpt++;}
nbre++;
test = 1;
}
printf("\n%d nombres premiers au total\n", cpt);
}
void dynamique
{ int nbre=2, i, test=1, cpt=0;
printf("\n");
while ( nbre<=n )
{ for (i=2 ; i<nbre ; i++)
{ if (nbre % i == 0) { test = 0; }
}
if (test) { printf("%d\n", nbre); cpt++;}
nbre++;
test = 1;
}
printf("\n%d nombres premiers au total\n", cpt);
}
int main()
{ int choix, n;
while (1)
{ printf("\n1 Crible statique (n = %d)\n2 Crible dynamique\n3 Quit\n", N);
scanf("%d", &choix);
switch(choix)
{case 1 : statique(); break;
case 2 : printf("\nn = ? ");
scanf("%d", &n);
dynamique; break;
default : return 0;
}
}
}[/cpp]
Existe-il par hasard une version récursive ?
Merci si vous pouvez m'aider
[cpp]#include <stdio.h>
#define N 100
void statique()
{int nbre=2, i, test=1, cpt=0;
printf("\n");
while ( nbre<=N )
{ for (i=2 ; i<nbre ; i++)
{ if (nbre % i == 0) { test = 0; }
}
if (test) { printf("%d\n", nbre); cpt++;}
nbre++;
test = 1;
}
printf("\n%d nombres premiers au total\n", cpt);
}
void dynamique
{ int nbre=2, i, test=1, cpt=0;
printf("\n");
while ( nbre<=n )
{ for (i=2 ; i<nbre ; i++)
{ if (nbre % i == 0) { test = 0; }
}
if (test) { printf("%d\n", nbre); cpt++;}
nbre++;
test = 1;
}
printf("\n%d nombres premiers au total\n", cpt);
}
int main()
{ int choix, n;
while (1)
{ printf("\n1 Crible statique (n = %d)\n2 Crible dynamique\n3 Quit\n", N);
scanf("%d", &choix);
switch(choix)
{case 1 : statique(); break;
case 2 : printf("\nn = ? ");
scanf("%d", &n);
dynamique; break;
default : return 0;
}
}
}[/cpp]