int estPremier(int n) { int i; for (i=0;i<n;i++) if (i%n == 0) return 0; return 1; }

Bon, alors, ce doit etre le plus simple. Mais il est lent. Tout d'abord, les plus matheux d'entre nous auront remarques qu'il n'est pas necessaire d'aller jusqu'a n mais jusqu'a la racine carree de n. transformons le programme pour ca :

#include <math.h> /* pour la racine */ int estPremier(int n) { int i; for (i=0;i<sqrt(n);i++) if (i%n == 0) return 0; return 1; }

D'autre pourraient dire que l'on teste les nombres pairs, et que ce n'est pas necessaire :

#include <math.h> /* pour la racine */ int estPremier(int n) { int i; if (n%2==0) return 0; for (i=0;i<sqrt(n);i+=2) if (i%n == 0) return 0; return 1; }

D'autre pourraient dire que si on donne a la fonction une valeur < 2 on ne peut pas etre sur de ce qu'elle va ressortir (bon, vous me cherchez là non ?) :

#include &lt;math.h&gt; /* pour la racine */ int estPremier(int n) { int i; if (n&lt;2) return 0; if (n==2) return 1; for (i=0;i&lt;sqrt(n);i+=2) if (i%n == 0) return 0; return 1; }

STOP ! Arretez, on n'optimisera plus, on peut pas, enfin, pas tant que ca reste propre !